.managed-links{list-style:none;padding:0;margin:0;overflow-wrap:anywhere}
.managed-links li{margin:8px 0;line-height:1.5}
.managed-links a{color:#fff;text-decoration:none}
.managed-links a:hover{color:#00ff3b;text-decoration:underline}
.approved-content{min-width:0}
.portfolio-gallery{display:grid;grid-template-columns:repeat(var(--gallery-columns,3),minmax(0,1fr));gap:var(--gallery-gap,16px);margin:18px 0;align-items:start}
.portfolio-gallery figure{margin:0;min-width:0}
.thumbnail-frame{display:block;width:100%;height:var(--thumbnail-height,170px);overflow:hidden;border:var(--art-border-width,1px) solid var(--art-border-color,#00ff3b);box-sizing:border-box}
.portfolio-gallery .gallery-thumbnail{display:block;width:100%;height:100%;max-width:none;max-height:none;margin:0;object-fit:var(--thumbnail-fit,cover);object-position:var(--thumbnail-position,center);transform:scale(var(--thumbnail-zoom,1));transform-origin:var(--thumbnail-position,center);border:0;box-sizing:border-box}

.artwork-trigger{display:block;width:100%;padding:0;margin:0;border:0;background:none;color:inherit;cursor:zoom-in;line-height:0}
.artwork-trigger:focus-visible,.portfolio-lightbox button:focus-visible,.managed-links a:focus-visible{outline:2px solid #00ff3b;outline-offset:4px}
.portfolio-lightbox{padding:24px;border:0;background:transparent;color:white;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;box-sizing:border-box}
.portfolio-lightbox[open]{display:grid;grid-template-rows:minmax(0,1fr) auto;place-items:center;gap:12px}
.portfolio-lightbox::backdrop{background:rgba(0,0,0,var(--lightbox-opacity,.5))}
.lightbox-stage{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:0}
.lightbox-image{display:block;width:auto;height:auto;max-width:calc(100vw - 112px);max-height:calc(100dvh - 120px);object-fit:contain}
.portfolio-lightbox button{position:absolute;border:1px solid rgba(255,255,255,.6);border-radius:6px;background:rgba(0,0,0,.65);color:white;min-width:44px;min-height:44px;cursor:pointer;font:26px/1 Arial,sans-serif}
.lightbox-close{top:16px;right:16px}
.lightbox-previous{left:12px;top:calc(50% - 22px)}
.lightbox-next{right:12px;top:calc(50% - 22px)}
.portfolio-lightbox button[hidden]{display:none}
.lightbox-caption{margin:0;max-width:calc(100vw - 48px);font:16px/1.5 "Trebuchet MS",Arial,sans-serif;text-align:center;overflow-wrap:anywhere;text-shadow:0 1px 3px black}
.reveal-pending{opacity:0;transform:translateY(8px);transition:opacity var(--fade-duration,450ms) ease,transform var(--fade-duration,450ms) ease!important}
.reveal-visible{opacity:1;transform:none}
@media(max-width:1024px){.portfolio-gallery{grid-template-columns:repeat(min(2,var(--gallery-columns,3)),minmax(0,1fr))}}
@media(max-width:360px){.portfolio-gallery{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.reveal-pending,.reveal-visible{opacity:1;transform:none;transition:none!important}}
/* Thumbnail zoom is a static crop, not motion. Retain it when animation is disabled. */
@media(prefers-reduced-motion:reduce){.portfolio-gallery .gallery-thumbnail{transform:scale(var(--thumbnail-zoom,1))!important;transition:none!important}}

.contact-fallback small{display:block;font-size:12px;line-height:1.4;margin-top:6px;color:inherit}

.icon-label{display:inline;white-space:normal}
.portfolio-icon{display:inline-block;width:var(--icon-size,16px);height:var(--icon-size,16px);color:var(--icon-color,#00ff3b);vertical-align:-.15em;flex-shrink:0;transition:filter .15s ease,transform .15s ease}
.portfolio-icon[data-icon-position=before]{margin-inline-end:var(--icon-spacing,6px)}
.portfolio-icon[data-icon-position=after]{margin-inline-start:var(--icon-spacing,6px)}
.icon-label:hover>.portfolio-icon[data-icon-hover=brighten]{filter:brightness(1.25)}
.icon-label:hover>.portfolio-icon[data-icon-hover=lift]{transform:translateY(-1px)}
@media(prefers-reduced-motion:reduce){.portfolio-icon{transition:none!important;transform:none!important}}
