/* Exhibition identity. Geometry stays in mobile.css so short screens and rotation
   continue to reserve room for the camera, fields, and primary actions. */
:root{--bg:#040c22;--text:#f4f7ff;--muted:#91aacd;--mint:#67d7ff;--line:rgba(113,169,247,.25);--panel:rgba(12,31,65,.82)}
body{background:var(--bg)}
.space-haze{background:radial-gradient(ellipse at 80% 22%,#1552ae45,transparent 48%),radial-gradient(ellipse at 12% 60%,#2958d834,transparent 48%),radial-gradient(ellipse at 72% 82%,#4a32a82a,transparent 40%),linear-gradient(160deg,#02091922,#08163345 48%,#02091de0)}
.space-haze:before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 68% 33%,#4777ed22,transparent 32%),radial-gradient(ellipse at 40% 62%,#317ded24,transparent 28%);transform:skewY(-20deg)}
#app{border-color:#578ef522;background:linear-gradient(90deg,#07122b18,transparent,#091c3918)}
.three-body-logo{display:block;width:28px;height:28px;flex:none;object-fit:contain;border-radius:2px}
.brand-text{color:#edf4ff}.brand-text span{color:#86a9d8}.status{color:#91b4e5}.page-code{color:#9ebee5}
.boot-logo{width:44px;height:44px}.verification-logo{width:38px;height:38px}
.center-page .upload-orbit .three-body-logo{width:38px;height:38px}
.keyboard-logo{width:20px;height:20px}
.modal-brand{display:flex;align-items:center;gap:8px;min-width:0}
.modal-brand .three-body-logo{width:24px;height:24px}
.modal-brand h3{font-size:14px;line-height:1.5}.modal-top>.icon-button{flex:none;margin-left:6px}
.dot{box-shadow:0 0 9px #60caffb0}
.steps span{background:#1b355c}.steps span.done{background:linear-gradient(90deg,#2e83ff,#72daff);box-shadow:0 0 8px #3495ff45}
.primary{background:linear-gradient(105deg,#2777ff,#52baff);color:#fff;border-radius:9px;box-shadow:0 5px 22px #1764ed35,inset 0 1px 0 #a6daff45}
.primary:hover{background:linear-gradient(105deg,#2777ff,#52baff)}
@media(hover:hover) and (pointer:fine){.primary:hover{background:linear-gradient(105deg,#3888ff,#69c8ff)}}
.secondary{background:#10264b;border-color:#578bd65c;color:#c5dcff;border-radius:9px}
.icon-button{background:#0b23417a;border-color:#6fa8f94a}
.text-button,.camera-tools label{color:#a6c5ed}
.home .slogan{color:#afc4e3}.home .invitation .mono,.home-footer{color:#8caeda}
.planet-scene:before{background:radial-gradient(circle,#327cff40,transparent 68%)}
.earth{background-size:contain;background-position:center;background-repeat:no-repeat;border-radius:0;box-shadow:none;transform:none;animation:earth-float 9s ease-in-out infinite;filter:drop-shadow(0 0 20px #216bff4a)}
.earth:after{display:none}
.orbit{border-color:#6fbfff80;box-shadow:0 0 12px #408eff15}
.orbit.second{border-color:#4d95e735}.orbit.third{border-color:#797cdd38}
.orbit-dot{background:#a9e9ff;box-shadow:0 0 16px #54bbff}
.coordinate,.space-label{color:#8bb5e8}.cross,.cross:after{border-color:#619ded70}
.panel,.archive-ticket{background:linear-gradient(135deg,#102f568f,#07172dd9);border-color:#568de456;border-radius:11px}
.badge{background:#2e8dff15;border-color:#63b7ff4a;border-radius:5px}
.loader-orbit,.upload-orbit{border-color:#4986e456;background:radial-gradient(circle,#2b65c51c,transparent 72%)}
.loader-orbit:after{border-right-color:#4086ee50}
.progress-track{background:#19335c}.progress-track>div{background:linear-gradient(90deg,#2984ff,#7ee6ff)}
.boot-caption,.loading-screen .muted{color:#9fbde4}
.camera-box{background:#06152c;border-color:#6397e577;border-radius:11px;box-shadow:0 0 25px #205eca15}
.camera-placeholder{color:#aac3e3}
.scan-line{background:linear-gradient(90deg,transparent,#83dbff,transparent);box-shadow:0 4px 20px #4b9eff44}
.scan-info{color:#b0d0f2}
.capture{background:#3587ff22;border-color:#b4dbff;box-shadow:0 0 22px #387eff26}
.capture:before{background:linear-gradient(140deg,#edfaff,#b6ddff)}
.handle:after{border-color:#e8f8ff;background:#3c9eff;box-shadow:0 0 0 5px #519bff38,0 0 13px #000}
.tip{border-left-color:#5da3ff66;color:#9eb7db}
.preview-space:before{background:repeating-linear-gradient(90deg,transparent 0 39px,#458fff24 40px),repeating-linear-gradient(0deg,transparent 0 29px,#4d92f520 30px)}
.ecosystem{border-color:#77caff88;background:radial-gradient(circle at 30% 20%,#70bfff2a,transparent 50%),radial-gradient(circle at 50% 90%,#2b75f538,transparent 65%);box-shadow:inset 0 0 28px #53a5ff25,0 0 40px #2876ed26}
.ecosystem:before{border-color:#73baff8c}.ecosystem:after{background:linear-gradient(130deg,#d8f5ff24,transparent 30%,transparent 70%,#80b4ff12)}
.preview-description{color:#a4c1e6}
.field .count{color:#8daed5}.required{color:#8ddcff}
.field input,.field textarea{color:#f0f6ff;background:#0a2041b8;border-color:#5486c95c;border-radius:8px}
.field input:focus,.field textarea:focus{border-color:#61c5ff;box-shadow:0 0 0 2px #3395ff16}
.field input::placeholder,.field textarea::placeholder{color:#7c97bc}
.category{background:#0c2445a0;border-color:#5586c757;color:#a0bee4;border-radius:7px}
.category.active{background:#2485ff26;border-color:#6ccaff;color:#d0edff}
.privacy-note{color:#8ba7cb}.keyboard-toolbar button{border-radius:6px}
.upload-orbit:before{border-color:#63caff;border-left-color:transparent;border-bottom-color:transparent}
.upload-percent{color:#c3eaff}.upload-percent span,.upload-logs{color:#8fb0dc}
.upload-log{border-bottom-color:#3f6ca52f}.upload-log.done{color:#badfff}
.result-mark{background:radial-gradient(circle,#3085ff1a,transparent);border-color:#6bbcff80;box-shadow:0 0 32px #348cff23}
.result-mark .icon{color:#9bddff}
.ticket-image{border-bottom-color:#719bd05e}.archive-id{color:#9bdfff}
.tabs .tab{color:#8eaad0}.tabs .tab.active{color:#b7e6ff;border-bottom-color:#69ccff}
.gallery-card{padding:8px;background:linear-gradient(135deg,#102b5290,#07152daf);border:1px solid #497bbe40;border-radius:12px}
.card-image{background:radial-gradient(circle,#174887,#08182f 76%);border-color:#508ee555;border-radius:8px}
.card-image:before{background:radial-gradient(circle,#439aff22,#398fff04);border-color:#77beff55;box-shadow:0 0 18px #2d84ee22}
.card-image .card-type{color:#add3ff}.card-image .demo-label{color:#8cb1e1}
.card-meta,.gallery-footer{color:#8faed4}.vote-button{color:#b1ceef}
.vote-button.voted{color:#ff5264}.vote-button.voted .icon{fill:currentColor}
.empty{color:#9fbde5}.detail-description{color:#b1c6e3}.longpress{color:#a1c8f4}
.detail-art{background:#081b36}.detail-workspace .detail-art{background:transparent}
.modal{background:linear-gradient(150deg,#0d2549,#07152b);border-color:#609df65a}
.modal .small{color:#afc4e1}
#toast{background:#d8edff;color:#112c54;border-radius:8px}
@keyframes earth-float{50%{transform:translateY(-5px)}}

/* Capture composition follows the supplied wireframe; its yellow marks are
   placement annotations. The preview and status row share the same width. */
.page-scanner .steps{margin:8px 0 9px}
.scan-heading .eyebrow{font-size:9px;line-height:1.6}
.scan-heading .page-title{font-size:24px;line-height:1.35;margin:3px 0 5px}
.scan-heading .page-sub{font-size:11px;line-height:1.65;margin:0 0 8px}
.page-scanner .scan-workspace{display:flex;flex-direction:column;align-items:center;justify-content:center}
.page-scanner .camera-box{aspect-ratio:1 / 1.41421356;align-self:auto;border-color:#ffffff80}
.page-scanner .guide{--mint:#fff;opacity:.5}
.page-scanner .scan-line{opacity:.5;background:linear-gradient(90deg,transparent,#fff,transparent);box-shadow:none}
.page-scanner .scan-info{margin:8px 0 0;gap:8px;font-size:9px;line-height:15px;align-self:center}
.page-scanner #scan-status{text-align:left}
.page-scanner #engine-status{text-align:right;font-size:7px}
.page-scanner .scan-info[data-compact="true"]{flex-direction:column;align-items:stretch;gap:1px}
.page-scanner .scan-info[data-compact="true"] #scan-status{overflow:visible;text-overflow:clip}
.page-scanner .scanner-actions{padding-top:12px;padding-bottom:6px}
.scanner-actions .capture-caption{color:#a6c5ed;margin-top:4px;line-height:15px}
.scanner-actions .camera-tools{gap:24px;margin-top:8px}
.scanner-actions .camera-tools label,.scanner-actions .camera-tools .text-button{min-height:36px}
html[data-short-viewport="true"] .page-scanner .steps{margin:5px 0 8px}
html[data-short-viewport="true"] .scan-heading .page-title{font-size:22px;line-height:1.35;margin:3px 0 5px}
html[data-short-viewport="true"] .scan-heading .page-sub{margin-bottom:8px}
html[data-short-viewport="true"] .page-scanner .scan-info{margin:8px 0 0;font-size:9px}
html[data-short-viewport="true"] .page-scanner .scanner-actions{padding-top:10px;padding-bottom:4px}
html[data-short-viewport="true"] .scanner-actions .camera-tools{margin-top:6px}
html[data-short-viewport="true"] .scanner-actions .camera-tools label,
html[data-short-viewport="true"] .scanner-actions .camera-tools .text-button{min-height:32px}
html[data-landscape-viewport="true"] .page-scanner{grid-template-rows:34px auto minmax(0,1fr)}
html[data-landscape-viewport="true"] .scan-heading .page-title{font-size:18px}
html[data-landscape-viewport="true"] .page-scanner .camera-box{aspect-ratio:4/3}
html[data-landscape-viewport="true"] .page-scanner .scan-info{margin:8px 0 0;grid-column:auto;grid-row:auto}
html[data-landscape-viewport="true"] .scanner-actions{grid-row:2/4;padding-top:0;padding-bottom:0}
html[data-landscape-viewport="true"] .scanner-actions .camera-tools{gap:4px;margin-top:12px}

/* Keep the progress groups centered after removing their footer captions. */
.page-uploading .upload-logs,.page-checking .panel{margin-bottom:auto}

/* A proportional exhibit screen uses the current artwork, with its reserved
   location highlighted at the upper right. No external screen connection. */
.display-position{width:100%;margin:12px 0 0;min-width:0;--display-width:100%}
.display-position-heading{width:100%;margin:0 auto 5px;display:flex;justify-content:space-between;gap:6px;font-size:9px;color:#b5cfee;line-height:15px}
.display-position-heading .mono{font-size:7px;color:#83a8d8;white-space:nowrap}
.display-position-heading>span:first-child{white-space:nowrap;min-width:0;overflow:hidden;text-overflow:ellipsis}
.museum-display{position:relative;width:var(--display-width);aspect-ratio:16/9;margin:auto;overflow:hidden;isolation:isolate;border:1px solid #6b9cf777;border-radius:7px;background:radial-gradient(ellipse at 77% 23%,#173d806b,transparent 45%),radial-gradient(ellipse at 28% 82%,#22297088,transparent 60%),#02091b;box-shadow:inset 0 0 20px #0007,0 5px 18px #01071666}
.museum-display:before{content:'';position:absolute;inset:0;background-image:radial-gradient(circle at 13% 18%,#d9edffa3 0 1px,transparent 1.2px),radial-gradient(circle at 65% 68%,#8dbcff77 0 .7px,transparent 1px),radial-gradient(circle at 40% 35%,#b6d9ff99 0 .8px,transparent 1px);background-size:67px 53px,41px 59px,89px 71px;z-index:-1}
.display-nebula{position:absolute;inset:-20%;background:radial-gradient(ellipse at 70% 50%,#337fff29,transparent 40%),radial-gradient(ellipse at 35% 60%,#7357d923,transparent 35%);transform:rotate(-24deg);z-index:-1}
.display-orbit{position:absolute;left:21%;top:12%;width:58%;height:69%;border:1px solid #3870b334;border-radius:50%;transform:rotate(-22deg)}
.display-neighbor{position:absolute;object-fit:contain;opacity:.5;filter:drop-shadow(0 0 4px #438df938);width:10%;height:20%;transform:rotate(-8deg)}
.neighbor-0{left:14%;top:22%}.neighbor-1{left:40%;top:15%}.neighbor-2{left:27%;top:56%}.neighbor-3{left:57%;top:63%}
.display-highlight{position:absolute;right:10%;top:16%;width:10%;height:20%;display:grid;place-items:center}
.display-highlight:before{content:'';position:absolute;inset:-22%;border-radius:50%;background:radial-gradient(circle,#8bddff70,#3b8dff35 45%,transparent 72%);box-shadow:0 0 15px #3c90ff35;animation:location-glow 3s ease-in-out infinite}
.highlight-ring{position:absolute;width:142%;height:142%;border:1px solid #9de4ffc9;border-radius:50%;box-shadow:0 0 12px #4cb1ff8c,inset 0 0 12px #56baff22}
.display-highlight img{position:relative;width:100%;height:100%;min-height:0;object-fit:contain;filter:drop-shadow(0 0 8px #98e3ff);z-index:1}
.highlight-caption{position:absolute;top:calc(100% + 10px);left:50%;transform:translateX(-50%);font-size:7px;color:#d4f1ff;white-space:nowrap}
.display-origin{position:absolute;left:6%;bottom:7%;font-size:5px;letter-spacing:.6px;color:#6f9bd0}
.display-corner{position:absolute;width:9px;height:9px;border-color:#8abbf4a6}
.corner-tl{left:5px;top:5px;border-left:1px solid;border-top:1px solid}.corner-br{right:5px;bottom:5px;border-right:1px solid;border-bottom:1px solid}
.display-position figcaption{font-size:10px;line-height:1.6;color:#c0d9fa;margin-top:6px}
.display-position figcaption span{display:block;font-size:8px;color:#88a9d3}
@keyframes location-glow{50%{opacity:.62;transform:scale(.95)}}
.page-success .success-content{justify-content:center}
.page-success .success-content .result-mark{width:48px;height:48px;margin:4px auto 10px}
.page-success .success-content .result-mark .icon{width:24px;height:24px}
.page-success .success-content .page-title{font-size:23px;line-height:1.35}
.page-success .success-content .page-sub{font-size:10px;line-height:1.5;margin-bottom:0}
.page-success .success-content .archive-ticket{padding:11px;margin-top:12px}
.page-success .success-content .ticket-image{padding-bottom:7px;margin-bottom:7px;gap:10px}
.page-success .success-content .ticket-image img{width:36px;height:36px}
.page-success .success-content .ticket-image h3{font-size:14px;margin-bottom:2px}
.page-success .success-content .ticket-image .small{font-size:10px}
.page-success .success-content .archive-id{margin:4px 0;font-size:12px}
.page-success .success-content>p.small{margin-top:10px!important;font-size:9px}
html[data-short-viewport="true"] .page-success .success-content .result-mark{width:34px;height:34px;margin:0 auto 6px}
html[data-short-viewport="true"] .page-success .success-content .result-mark .icon{width:19px;height:19px}
html[data-short-viewport="true"] .page-success .success-content .page-title{font-size:21px;margin:3px 0}
html[data-short-viewport="true"] .page-success .success-content .eyebrow{font-size:7px;letter-spacing:1.2px}
html[data-short-viewport="true"] .page-success .success-content .page-sub{font-size:9px}
html[data-short-viewport="true"] .page-success .display-position{margin-top:8px}
html[data-short-viewport="true"] .page-success .display-position figcaption{margin-top:3px;font-size:9px}
html[data-short-viewport="true"] .page-success .display-position figcaption span{font-size:7px}
html[data-short-viewport="true"] .page-success .success-content .archive-ticket{margin-top:8px;padding:8px}
html[data-short-viewport="true"] .page-success .success-content .ticket-image img{width:28px;height:28px}
html[data-short-viewport="true"] .page-success .success-content .ticket-image{padding-bottom:5px;margin-bottom:5px}
html[data-short-viewport="true"] .page-success .success-content .archive-id{font-size:10px;margin:2px 0}
html[data-short-viewport="true"] .page-success .success-content .archive-ticket>.tiny{font-size:8px}
html[data-short-viewport="true"] .page-success .success-content>p.small{margin-top:7px!important;font-size:8px}
html[data-compact-viewport="true"] .page-success .success-content .result-mark,
html[data-compact-viewport="true"] .page-success .success-content .page-heading .eyebrow,
html[data-compact-viewport="true"] .page-success .success-content .archive-ticket>.eyebrow,
html[data-compact-viewport="true"] .page-success .success-content .archive-ticket>.tiny{display:none}
html[data-compact-viewport="true"] .page-success .success-content .ticket-image{border-bottom:0;padding-bottom:3px;margin-bottom:3px}
html[data-compact-viewport="true"] .page-success .success-content .ticket-image .small{font-size:9px;line-height:1.5}
html[data-compact-viewport="true"] .page-success .success-content .page-heading .page-sub,
html[data-compact-viewport="true"] .page-success .success-content>p.small{display:none}
html[data-compact-viewport="true"] .page-success .success-content .ticket-image h3{font-size:12px;line-height:1.35}
html[data-landscape-viewport="true"] .page-success .success-content{grid-template-rows:auto auto minmax(0,1fr);gap:4px 16px}
html[data-landscape-viewport="true"] .page-success .success-content .result-mark{display:none}
html[data-landscape-viewport="true"] .page-success .success-content .page-heading{grid-column:1;grid-row:1;align-self:center}
html[data-landscape-viewport="true"] .page-success .success-content .archive-ticket{grid-column:1;grid-row:2;margin:0}
html[data-landscape-viewport="true"] .page-success .success-content .display-position{grid-column:2;grid-row:1/4;margin:0;align-self:center}
html[data-landscape-viewport="true"] .page-success .success-content>p.small{grid-column:1;grid-row:3;align-self:start}
.page-success[data-display-layout="compact"] .success-content .result-mark,
.page-success[data-display-layout="compact"] .success-content>p.small,
.page-success[data-display-layout="tiny"] .success-content .result-mark,
.page-success[data-display-layout="tiny"] .success-content>p.small{display:none}
.page-success[data-display-layout="tiny"] .success-content .page-heading .eyebrow,
.page-success[data-display-layout="tiny"] .success-content .page-heading .page-sub,
.page-success[data-display-layout="tiny"] .archive-ticket>.eyebrow,
.page-success[data-display-layout="tiny"] .archive-ticket>.tiny{display:none}
.page-success[data-display-layout="tiny"] .head{height:34px}
.page-success[data-display-layout="tiny"] .success-content .page-title{font-size:19px;line-height:1.35;margin:2px 0}
.page-success[data-display-layout="tiny"] .display-position{margin-top:4px}
.page-success[data-display-layout="tiny"] .display-position-heading{font-size:8px;line-height:12px;margin-bottom:3px}
.page-success[data-display-layout="tiny"] .display-position figcaption{font-size:8px;line-height:12px;margin-top:3px}
.page-success[data-display-layout="tiny"] .success-content .archive-ticket{margin-top:6px;padding:7px}
.page-success[data-display-layout="tiny"] .success-content .ticket-image{border-bottom:0;padding-bottom:2px;margin-bottom:2px;gap:8px}
.page-success[data-display-layout="tiny"] .success-content .ticket-image img{width:24px;height:24px}
.page-success[data-display-layout="tiny"] .success-content .ticket-image h3{font-size:11px;line-height:1.3;margin-bottom:1px}
.page-success[data-display-layout="tiny"] .success-content .ticket-image .small{font-size:8px;line-height:1.4}
.page-success[data-display-layout="tiny"] .success-content .archive-id{font-size:10px;line-height:1.4;margin:2px 0}

/* Equal inset rectangles follow the collection-success wireframe. */
.page-success .success-content{--success-frame-width:88%;--success-frame-height:auto}
.page-success .success-content .result-mark{display:none}
.page-success .museum-display,
.page-success .success-content .archive-ticket{width:var(--success-frame-width);height:var(--success-frame-height);aspect-ratio:16/9;border-radius:8px;margin-left:auto;margin-right:auto}
.page-success .success-content .archive-ticket{display:flex;flex-direction:column;justify-content:center;text-align:left;min-height:0}
.page-success .display-position-heading{width:var(--success-frame-width);flex-wrap:wrap;column-gap:8px;row-gap:0}
.page-success .display-position-heading .display-location{font-family:inherit;font-size:8px;color:#a5c9f2;white-space:nowrap;margin-left:auto}
html[data-landscape-viewport="true"] .page-success .success-content .archive-ticket{justify-self:center;margin-left:auto;margin-right:auto}

/* Voting always shows a white sheet, including older transparent-only records. */
.page-gallery .card-image img{background:#fff}
