/* Complete palettes, applied to UI surfaces only. Object pixels are never tinted. */
:root,:root[data-palette=porcelain]{--paper:#f6f7f9;--ink:#202b38;--muted:#596574;--accent:#425c7a;--line:#d5dae1;--surface:#e9edf2;--forest:#293e55;--button-ink:#ffffff;--stage:#dde2e9;--frame:#c5cdd7;--focus:#496da0;color-scheme:light}
:root[data-palette=midnight]{--paper:#161d27;--ink:#eff1f5;--muted:#b6bfce;--accent:#c0cfe6;--line:#414b5b;--surface:#25303e;--forest:#d3dfed;--button-ink:#17202c;--stage:#101620;--frame:#2d3745;--focus:#bed7ff;color-scheme:dark}
:root[data-palette=oxblood]{--paper:#301923;--ink:#fff0e9;--muted:#d8bcb7;--accent:#efbda0;--line:#70505a;--surface:#452631;--forest:#f1c7ad;--button-ink:#301923;--stage:#201019;--frame:#5b3a43;--focus:#ffd4ab;color-scheme:dark}
:root[data-palette=parchment]{--paper:#f7f5ef;--ink:#252722;--muted:#66665e;--accent:#786242;--line:#dcdad1;--surface:#eeece5;--forest:#323b33;--button-ink:#ffffff;--stage:#eae7de;--frame:#a99f90;--focus:#8a6c37;color-scheme:light}
html,body,body>header,dialog,.museum-menu-content{background:var(--paper);color:var(--ink)}
body>header{background:var(--paper)!important;border-color:var(--line)}
.brand-tld,.welcome-mark,.empty h2 i,.hero-copy h1 i{color:var(--accent)}
:focus-visible{outline-color:var(--focus)!important}
.primary,header .primary,.detail-navigation>[aria-selected=true],.collection-filter[aria-pressed=true]{background:var(--forest);border-color:var(--forest);color:var(--button-ink)}
.primary:hover{background:var(--forest);filter:brightness(1.08)}
input,textarea,select,.detail-reading input,.detail-reading textarea,.detail-reading select{color:var(--ink);background:var(--paper);border-color:var(--line)}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}
body.has-objects .collection-search>div,.collection-search>div{background:var(--surface);border-color:var(--line)}
body.has-objects #status,.panel-intro,.detail-text,.collection-search input,.voice-status{color:var(--muted)}
.collection-toolbar{align-items:center;gap:8px}
.collection-toolbar #open-appearance{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:8px 13px;border:1px solid var(--line);border-radius:24px;color:var(--ink);font-size:12px}
#appearance-current{color:var(--muted);font-size:11px}
body.has-objects .gallery .card,body.has-objects .gallery .card:nth-child(n),body.has-objects .gallery .card .frame{background:var(--frame)}
body.has-objects .gallery .card .frame img{filter:none}
body.has-objects .gallery .card .info{min-height:0;padding:clamp(13px,2vw,25px);background:linear-gradient(0deg,#111823f2 0%,#111823c9 65%,#11182300 100%)}
body.has-objects .gallery .card .info strong{font-size:clamp(21px,2.3vw,34px);line-height:1.1;letter-spacing:-.025em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
body.has-objects .gallery .card .info span{display:none}
.gallery .card .frame-waiting{font:italic clamp(17px,2vw,25px)/1.35 Georgia,serif;max-width:25ch;color:var(--ink);text-shadow:none;letter-spacing:0;padding:20px}
.gallery .card:not(.has-presentation) .frame{background:var(--surface)}
#detail,#detail .detail-topbar,#detail .detail-navigation,#detail .view-caption,#capture,.voice-recorder{background:var(--paper);color:var(--ink)}
#panel-view,#detail .view-stage .detail-placeholder,#detail .generated-panels{background:var(--stage);color:var(--ink);border-color:var(--line)}
#detail .generated-panel{color:var(--muted)}#detail .generated-panel img{background:var(--frame)}
#detail .generated-panel[aria-pressed=true]{background:var(--forest);color:var(--button-ink);box-shadow:0 0 0 1px var(--forest)}
.view-download,.view-zoom{background:var(--paper);border-color:var(--line);color:var(--ink)}
.portrait-confirm,#undo-trash-note,.research-card,.research-summary,.research-stat,.research-source,.research-form,.voice-orb{background:var(--surface);color:var(--ink);border-color:var(--line)}
.research-tabs button,.research-card p,.voice-points q,.voice-story small,.voice-state,.voice-recorder small{color:var(--muted)}
.research-tabs button[aria-selected=true]{background:var(--forest);color:var(--button-ink)}
#capture:not(.camera-live) .capture-bottom,.capture-topbar,.capture-heading,.photo-queue>li{background:var(--paper);color:var(--ink);border-color:var(--line)}
.capture-tip,.capture-privacy,.angle-explainer,.capture-voice-choice small{color:var(--muted)}
.voice-recorder[data-state=recording] .voice-orb{background:var(--forest);color:var(--button-ink)}
/* A quieter alternative keeps complete objects visible and captions off the image. */
html[data-browse=catalogue] body.has-objects .gallery{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:auto;gap:clamp(16px,2.4vw,35px);align-items:start}
html[data-browse=catalogue] body.has-objects .gallery .card:nth-child(n){grid-column:auto!important;grid-row:auto!important;display:flex;flex-direction:column;overflow:hidden;border-radius:9px;background:var(--surface)}
html[data-browse=catalogue] body.has-objects .gallery .card:nth-child(n) .frame{position:relative;inset:auto;aspect-ratio:4/5;width:100%;height:auto;flex:none;border-radius:0;background:var(--stage)}
html[data-browse=catalogue] body.has-objects .gallery .card .info{position:static;min-height:0;padding:15px 16px 18px;background:var(--paper);color:var(--ink);width:100%;opacity:1;border-bottom:1px solid var(--line)}
html[data-browse=catalogue] body.has-objects .gallery .card .info strong{font:normal clamp(20px,2vw,29px)/1.16 Georgia,serif;color:var(--ink);text-shadow:none}
html[data-browse=catalogue] body.has-objects .gallery .card:focus-visible{outline-color:var(--focus)}
/* Appearance is a live preview, not an image generation control. */
#appearance{width:min(580px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:clamp(20px,4vw,32px);border:1px solid var(--line);border-radius:20px;overflow:auto}
#appearance::backdrop{background:#0c101740;backdrop-filter:blur(3px)}
#appearance h2{font:normal clamp(30px,7vw,43px)/1.05 Georgia,serif;letter-spacing:-.04em;margin:0 0 12px}
#appearance>p{font-size:13px;line-height:1.6;color:var(--muted)}
#appearance fieldset{border:0;padding:0;margin:22px 0;min-width:0}
#appearance legend{font-size:10px;text-transform:uppercase;letter-spacing:.18em;margin-bottom:12px;color:var(--accent)}
.palette-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.palette-choice{position:relative;display:flex;flex-direction:column;gap:5px;margin:0;padding:13px;border:1px solid var(--line);border-radius:12px;cursor:pointer;min-height:94px;font-weight:400;line-height:1.4}
.palette-choice:has(input:checked){box-shadow:0 0 0 2px var(--accent);border-color:var(--accent)}
.palette-choice input{position:absolute;right:12px;top:13px;width:18px;height:18px;margin:0;accent-color:var(--accent);padding:0}
.palette-choice strong{font:normal 20px Georgia,serif;padding-right:24px}.palette-choice small{color:var(--muted);font-size:11px}
.palette-swatch{display:flex;gap:4px;height:17px;margin-top:6px}.palette-swatch i{display:block;border-radius:3px;flex:1;background:var(--swatch);border:1px solid #8885}
.browse-options{display:flex;gap:10px}.browse-options label{display:flex;gap:9px;align-items:center;flex:1;margin:0;padding:12px;border:1px solid var(--line);border-radius:25px;min-height:48px;font-size:13px;cursor:pointer}.browse-options label:has(input:checked){background:var(--surface);border-color:var(--accent)}.browse-options input{margin:0;padding:0;width:18px;height:18px;accent-color:var(--accent)}
#close-appearance{width:100%;min-height:50px;border-radius:30px}#appearance-status{min-height:3em;margin-bottom:0!important;font-size:12px!important}
@media(max-width:800px){html[data-browse=catalogue] body.has-objects .gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:17px 12px}html[data-browse=catalogue] body.has-objects .gallery .card .info{padding:12px 4px 15px}html[data-browse=catalogue] body.has-objects .gallery .card .info strong{font-size:21px}body.has-objects .gallery .card .info strong{font-size:clamp(21px,5vw,29px)}#appearance{margin:auto 0 0;width:100%;max-width:none;max-height:90dvh;border-radius:22px 22px 0 0;padding-bottom:max(20px,env(safe-area-inset-bottom))}.collection-toolbar #appearance-current{display:none}}
@media(max-width:360px){.palette-choice{padding:10px}.palette-choice strong{font-size:18px}.palette-choice input{right:8px;top:11px}html[data-browse=catalogue] body.has-objects .gallery .card .info strong{font-size:19px}}
/* Reading, evidence and capture inherit the same palette instead of leaving cream islands. */
.collection-filter{color:var(--muted);border-color:var(--line)}
#object-research,.research-workspace,.research-editor label,.research-evidence-search{color:var(--ink)}
.research-intro,.research-help,.research-empty,.research-status,.research-eyebrow,.research-badge,.research-file-selection{color:var(--muted)}
.research-tabs{background:var(--paper);border-color:var(--line)}
.research-editor form,.research-progress,.research-tools>button:not(.primary),.research-actions>button,.research-add,.research-editor-heading>button{background:var(--surface);color:var(--ink);border-color:var(--line)}
.research-card a,.research-footer a{color:var(--accent)}
.research-badge,.research-card blockquote,.research-footer{border-color:var(--line)}
#capture-review input,#capture-review textarea,#capture-review .queued-photo{background:var(--surface);color:var(--ink)}
#capture:not(.camera-live) .camera-stage{background:var(--surface)}
#capture-review .review-photograph{background:var(--frame)}
#detail .preparing-art{background:var(--stage);color:var(--ink)}
#detail .preparing-art span:not(.preparing-mark),#detail .preparing-art small,.object-journey,.journey-eyebrow,.journey-steps small{color:var(--muted)}
#detail .detail-navigation>[aria-selected=true]{background:var(--forest);color:var(--button-ink)}
#detail .detail-navigation>[aria-selected=false]{color:var(--muted)}
#detail .view-caption #detail-image-kind,#detail .view-caption #detail-ai-summary{color:var(--muted)}
#appearance .eyebrow{color:var(--accent)}
html[data-browse=catalogue] body.has-objects .gallery{width:calc(100% - 2 * clamp(16px,2.1vw,36px));margin:0 auto}
html[data-browse=catalogue] body.has-objects .gallery[data-count="1"]{grid-template-columns:minmax(0,640px);justify-content:center}
/* Keep the add action in the sticky header, clear of photographs and captions. */
@media(max-width:760px){body>header{padding:12px 14px;gap:8px}header .brand{font-size:25px}header .nav{gap:6px;flex-wrap:nowrap}header .nav #add{position:static!important;min-height:44px;min-width:68px;padding:10px 12px;font-size:0;box-shadow:none;border-radius:24px}header .nav #add::after{content:'＋ Add';font-size:13px}body:has(dialog[open]) header .nav #add{visibility:hidden}}
:root{--danger:#9a382c}:root[data-palette=midnight],:root[data-palette=oxblood]{--danger:#ffb4a2}#detail #quick-trash{color:var(--danger)}
.resume-captures button{background:var(--surface);color:var(--ink);border-color:var(--line)}
.research-tabs [aria-selected=true]{box-shadow:inset 0 -2px var(--accent)}
/* Gallery is a photographic wall. Catalogue retains labels and management tools. */
html[data-browse=gallery] body.has-objects main{padding:0!important;margin:0!important;min-height:100dvh}
html[data-browse=gallery] body.has-objects main>:not(#gallery):not(#undo-trash-note){display:none!important}
html[data-browse=gallery] body.has-objects>header{position:fixed;inset:max(10px,env(safe-area-inset-top)) 12px auto auto;width:44px;height:44px;min-height:0;padding:0;border:0;background:transparent!important;z-index:8}
html[data-browse=gallery] body.has-objects>header .brand,html[data-browse=gallery] body.has-objects>header #add{display:none!important}
html[data-browse=gallery] body.has-objects>header .nav{display:block;margin:0}
html[data-browse=gallery] body.has-objects .museum-menu>summary{background:var(--paper);color:var(--ink);border:0;box-shadow:0 2px 12px #0003}
html[data-browse=gallery] body.has-objects #gallery{display:block;columns:2;column-gap:0;width:100%;margin:0;padding:0;min-height:100dvh}
html[data-browse=gallery] body.has-objects #gallery>.card{display:none!important}
html[data-browse=gallery] body.has-objects #gallery>.card:not([hidden]){display:block!important;break-inside:avoid;position:relative;width:100%;min-height:0!important;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;background:transparent}
html[data-browse=gallery] body.has-objects #gallery .card:nth-child(n) .frame{position:static;inset:auto;width:100%;height:auto;aspect-ratio:auto;margin:0;padding:0;border:0;border-radius:0;background:transparent;display:block}
html[data-browse=gallery] body.has-objects #gallery .card:nth-child(n) .frame>img{position:static;inset:auto;display:block;width:100%;height:auto;min-height:0;max-height:none;padding:0;margin:0;filter:none;transform:none!important}
html[data-browse=gallery] body.has-objects #gallery .card .info,html[data-browse=gallery] body.has-objects #gallery .frame-waiting{display:none!important}
/* A committed capture stays reachable before its portrait/thumbnail is ready. */
html[data-browse=gallery] body.has-objects #gallery>.card:not(.has-presentation) .frame{display:grid;place-items:center;min-height:180px;background:var(--surface);padding:18px;box-sizing:border-box}
html[data-browse=gallery] body.has-objects #gallery>.card:not(.has-presentation) .frame-waiting{display:block!important;font-size:16px;text-align:center}
html[data-browse=gallery] body.has-objects #gallery>.card:not(.has-presentation) .info{display:block!important;position:static;width:100%;opacity:1;padding:12px 14px 18px;background:var(--surface);color:var(--ink);text-shadow:none;overflow-wrap:anywhere}
html[data-browse=gallery] body.has-objects #gallery>.card:not(.has-presentation) .info strong{display:block;-webkit-line-clamp:unset;overflow:visible;font-size:18px;line-height:1.25;color:var(--ink);text-shadow:none}
html[data-browse=gallery] body.has-objects #undo-trash-note:not([hidden]){position:fixed;bottom:16px;left:16px;right:16px;z-index:10;margin:0}
@media(min-width:760px){html[data-browse=gallery] body.has-objects #gallery{columns:3}}
@media(min-width:1200px){html[data-browse=gallery] body.has-objects #gallery{columns:4}}
/* Anchor to the viewport, never to the narrow floating menu button. */
body .museum-menu-content{position:fixed;inset:calc(64px + env(safe-area-inset-top)) 12px auto auto;width:min(360px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:calc(100dvh - 88px - env(safe-area-inset-top) - env(safe-area-inset-bottom));box-sizing:border-box;overflow:auto;overscroll-behavior:contain;padding:20px;z-index:20}
.museum-menu-content .museum-browse-tools{display:grid;gap:4px;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:12px}
.museum-browse-tools>button{display:block;width:100%;min-height:48px;text-align:left;padding:12px;border:0;border-radius:6px;background:transparent;color:var(--ink);font-size:14px}
.museum-browse-tools>button:hover,.museum-browse-tools>button:focus-visible{background:var(--surface)}
body .museum-menu-content{right:max(12px,env(safe-area-inset-right));width:min(360px,calc(100vw - 24px - env(safe-area-inset-left) - env(safe-area-inset-right)));max-width:calc(100vw - 24px - env(safe-area-inset-left) - env(safe-area-inset-right));overflow-wrap:anywhere}
.museum-menu-content button{white-space:normal;max-width:100%}

/* Image inspection is a separate modal; closing never leaves the catalogue page. */
#catalogue-image-viewer{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:#111;color:#fff;overflow:auto;overscroll-behavior:contain}
#catalogue-image-viewer::backdrop{background:#111}
#catalogue-full-image{display:block;width:100%;height:100%;object-fit:contain;touch-action:pan-x pan-y pinch-zoom}
#close-catalogue-image{position:fixed;top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));z-index:2;width:48px;height:48px;padding:0;border:1px solid #ffffff70;border-radius:50%;background:#111c;color:#fff;font-size:25px;cursor:pointer}
#catalogue-image-status{position:absolute;bottom:16px;left:20px;right:20px;text-align:center;pointer-events:none}
#detail-photo[role=button]{cursor:zoom-in}

/* A phone-sized catalogue is composed from saved individual photos, not a reduced landscape plate. */
#detail[data-panel=view]:not(.catalogue-details) .detail-topbar{position:absolute;inset:0 0 auto;border:0;background:transparent;pointer-events:none}
#detail[data-panel=view]:not(.catalogue-details) .detail-topbar button,#detail[data-panel=view]:not(.catalogue-details) .object-tools{pointer-events:auto;background:var(--paper)}
#detail[data-panel=view]:not(.catalogue-details) #detail-position,#detail[data-panel=view]:not(.catalogue-details) #previous-object,#detail[data-panel=view]:not(.catalogue-details) #next-object{visibility:hidden}
#detail[data-panel=view]:not(.catalogue-details) .view-caption,#detail[data-panel=view]:not(.catalogue-details) #generated-panel-strip,#detail[data-panel=view]:not(.catalogue-details) #download-view,#detail[data-panel=view]:not(.catalogue-details) #zoom-object{display:none!important}
#detail[data-panel=view]:not(.catalogue-details) .view-stage{padding:0;flex:1;height:100%}
#catalogue-spread:not([hidden]){position:absolute;inset:0;display:grid;grid-template-columns:3fr 2fr;grid-template-rows:repeat(var(--support-count,3),minmax(0,1fr));gap:0;background:var(--stage)}
#catalogue-spread>button{display:block;min-width:0;min-height:0;border:0;border-radius:0;margin:0;padding:0;overflow:hidden;background:transparent}
#catalogue-spread>button:first-child{grid-column:1;grid-row:1 / -1}
#catalogue-spread>button:not(:first-child){grid-column:2}
#catalogue-spread>button>img{display:block;width:100%;height:100%;object-fit:contain;border:0;border-radius:0}
#catalogue-spread:has(>button:only-child){grid-template-columns:1fr}
#catalogue-explore{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);z-index:2;max-width:calc(100% - 24px);min-height:48px;padding:12px 20px;border:0;border-radius:30px;background:var(--paper);color:var(--ink);box-shadow:0 2px 16px #0003;white-space:nowrap;font-size:13px}
#detail.catalogue-details #catalogue-spread,#detail.catalogue-details #catalogue-explore{display:none!important}
@media(max-aspect-ratio:1/1){#catalogue-spread:not([hidden]){grid-template-columns:repeat(var(--support-count,3),minmax(0,1fr));grid-template-rows:2fr 1fr}#catalogue-spread>button:first-child{grid-column:1 / -1;grid-row:1}#catalogue-spread>button:not(:first-child){grid-column:auto;grid-row:2}#catalogue-spread:has(>button:only-child){grid-template-rows:1fr}}
#catalogue-reprocess{width:min(680px,100%);max-height:100dvh;overflow:auto;padding:24px;background:var(--paper);color:var(--ink);border:0;border-radius:18px}
.reprocess-heading{display:flex;align-items:start;justify-content:space-between;gap:16px}.reprocess-heading h2{font-size:32px}.reprocess-heading>button{min-width:48px;min-height:48px}.reprocess-controls{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}#catalogue-reprocess p{line-height:1.6}#reprocess-progress{width:100%;accent-color:var(--forest)}#reprocess-items{padding:0;list-style:none}#reprocess-items li{display:grid;gap:6px;padding:16px 0;border-top:1px solid var(--line)}#reprocess-items span{font-size:13px;color:var(--muted)}@media(max-width:600px){#catalogue-reprocess{inset:0;width:100%;height:100dvh;max-width:none;margin:0;border-radius:0;padding:20px;padding-top:max(20px,env(safe-area-inset-top));padding-bottom:max(20px,env(safe-area-inset-bottom))}}
#catalogue-manage{width:min(680px,100%);max-height:100dvh;overflow:auto;padding:24px;background:var(--paper);color:var(--ink);border:0;border-radius:18px}#manage-items{list-style:none;padding:0}#manage-items li{display:grid;gap:10px;padding:18px 0;border-top:1px solid var(--line)}#manage-items li>div{display:flex;gap:12px;flex-wrap:wrap}#manage-items button{min-height:48px}#manage-items span{color:var(--muted);font-size:14px}@media(max-width:600px){#catalogue-manage{inset:0;width:100%;height:100dvh;max-width:none;margin:0;border-radius:0;padding:20px;padding-bottom:max(20px,env(safe-area-inset-bottom))}}
