:root{color-scheme:dark;--bg:#151715;--panel:#1e211e;--text:#eeeae2;--muted:#92978e;--accent:#d5ef89;--line:#353a32}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--bg);color:var(--text);font-family:"Segoe UI","Microsoft YaHei",sans-serif}button,input,a{-webkit-tap-highlight-color:transparent}button,a,input{outline-offset:5px}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}header{max-width:1440px;margin:auto;height:100px;display:flex;align-items:center;justify-content:space-between;padding:0 5%;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:23px;white-space:nowrap}.brand-icon{font-size:39px;color:var(--accent)}.brand small{font-size:10px;letter-spacing:2px;margin-left:10px;font-weight:500}nav{display:flex;gap:30px;align-items:center;font-size:13px}nav a{color:var(--muted)}nav .active{color:var(--accent)}.text-button{border:0;background:none;color:var(--text);padding:8px 0}.availability{font-size:11px;color:var(--muted)}i{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;margin-right:9px}main{max-width:1440px;margin:auto;padding:0 5%}.hero{display:grid;grid-template-columns:1fr 1fr;min-height:580px;margin:46px 0 84px;gap:36px}.hero-copy{padding:28px 0 0;display:flex;align-items:flex-start;flex-direction:column}.eyebrow{font-size:10px;letter-spacing:2.2px;color:var(--muted);line-height:1.7}h1{font-size:clamp(40px,4.8vw,70px);line-height:1.25;font-weight:500;letter-spacing:-2px;margin:33px 0 22px}h1 span{color:var(--accent)}.intro{font-size:14px;line-height:2;color:var(--muted)}.primary{background:var(--accent);color:#242b17;display:flex;align-items:center;justify-content:space-between;gap:42px;border:0;padding:15px 22px;font-size:13px;font-weight:600;margin-top:24px}.primary:hover{background:#e3ffa0}.hero-foot{display:flex;justify-content:space-between;width:100%;font-size:9px;color:var(--muted);letter-spacing:1px;margin-top:auto;padding-top:45px}.hero-foot>span:first-child{color:var(--accent)}.hero-art{position:relative;overflow:hidden;background:#292e26;min-height:520px}.hero-art img{width:100%;height:100%;position:absolute;object-fit:cover;transition:transform .8s}.hero-art:hover img{transform:scale(1.04)}.art-label{position:absolute;top:25px;left:25px;font-size:9px;letter-spacing:1.5px;color:#d6d9cc}.art-caption{position:absolute;bottom:54px;left:28px;right:28px;display:flex;justify-content:space-between;align-items:center}.art-caption small{font-size:9px;letter-spacing:2px;color:#c6cdbd}.art-caption h2{font-size:23px;font-weight:400;margin:10px 0}.round-arrow{border:1px solid #a4af97;border-radius:50%;width:43px;height:43px;display:grid;place-items:center}.orbit-label{position:absolute;bottom:22px;left:28px;font-size:11px;color:#c7cebf}.section-heading{display:flex;justify-content:space-between;align-items:end}.section-heading h2{font-size:27px;font-weight:400;margin:10px 0 0}.section-heading h2 span{font-size:13px;color:var(--muted)}.section-heading>p{font-size:12px;color:var(--muted)}.filter-bar{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);margin:30px 0;padding-top:22px;gap:20px}.filters{display:flex;gap:8px;flex-wrap:wrap}.filters button{background:none;border:1px solid transparent;color:var(--muted);padding:9px 16px;font-size:12px}.filters button.selected{background:var(--accent);color:#263016}.search{color:var(--muted);border-bottom:1px solid var(--line);padding:8px}.search input{background:none;border:0;color:var(--text);width:140px;font:inherit;font-size:12px}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:36px 25px}.card-image{aspect-ratio:1.18;background:#282b26;position:relative;overflow:hidden}.card-image img{width:100%;height:100%;object-fit:cover;transition:transform .5s}.card:hover img{transform:scale(1.06)}.card-index{position:absolute;top:17px;left:17px;font-size:10px;color:#e3e6dc}.card-360{position:absolute;right:14px;bottom:14px;background:#151715aa;border:1px solid #ffffff30;padding:5px 9px;font-size:10px;border-radius:20px}.card-meta{display:flex;align-items:center;justify-content:space-between}.card h3{font-size:17px;font-weight:400;margin:17px 0 7px}.card-meta>span{font-size:20px;color:var(--muted)}.card p{margin:0;font-size:10px;letter-spacing:1px;color:var(--muted)}.sample-note{font-size:11px;color:var(--muted);margin-top:35px}.about{border-top:1px solid var(--line);margin-top:80px;padding:45px 0 55px;position:relative}.about h2{font-size:34px;line-height:1.5;font-weight:400}.about>p:not(.eyebrow){color:var(--muted);font-size:13px;line-height:2}.about>span{position:absolute;right:0;bottom:60px;font-size:10px;letter-spacing:2px;color:var(--accent)}footer{max-width:1440px;margin:auto;padding:28px 5%;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}footer span,footer>a:last-of-type{font-size:11px;color:var(--muted)}footer .brand{font-size:17px}dialog{color:var(--text);border:1px solid var(--line);background:var(--bg);padding:0}dialog::backdrop{background:#000b;backdrop-filter:blur(8px)}#detail{width:min(1300px,96vw);max-width:96vw;max-height:95dvh}.detail-top{display:flex;align-items:center;justify-content:space-between;padding:20px 26px;border-bottom:1px solid var(--line)}.detail-top button,.import-close{background:none;border:0;color:var(--muted);font-size:22px}.detail-layout{display:grid;grid-template-columns:1fr 320px}.viewport{position:relative;min-height:580px;background:radial-gradient(ellipse at 50% 45%,#353d32,#1c201c 75%);overflow:hidden}.viewport:fullscreen{height:100vh}.viewport canvas{width:100%;height:100%;position:absolute;inset:0;touch-action:none;cursor:grab}.viewport canvas:active{cursor:grabbing}.viewer-badge{position:absolute;top:22px;left:22px;font-size:10px;letter-spacing:1px;pointer-events:none}.viewer-badge>span{margin-left:16px;color:var(--muted)}.view-presets{position:absolute;right:18px;top:16px;display:flex;gap:3px}.view-presets button,.viewer-controls button{color:#d4d9cd;border:1px solid #59634b;background:#20261edb;padding:9px 12px;font-size:11px}.viewer-controls{position:absolute;bottom:48px;left:50%;transform:translateX(-50%);display:flex;gap:7px;white-space:nowrap}.viewer-controls button[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}.gesture{position:absolute;bottom:10px;width:100%;text-align:center;font-size:10px;color:var(--muted);pointer-events:none}aside{padding:35px 28px}aside h2{font-size:25px;font-weight:400;margin:15px 0}#detail-description{font-size:12px;color:var(--muted);line-height:1.9}.detail-tags{display:flex;gap:8px;margin:20px 0}.detail-tags span{border:1px solid var(--line);font-size:10px;padding:5px 8px;color:var(--accent)}.specs{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0}.specs>div{display:flex;justify-content:space-between;gap:10px;font-size:11px;margin:15px 0}.specs span{color:var(--muted)}.specs strong{font-weight:400}.color-label{display:flex;justify-content:space-between;align-items:center;font-size:12px;margin-top:24px}.color-label input{width:28px;height:25px;border:0;padding:0;background:none}.swatches{display:flex;gap:12px;margin:15px 0}.swatches button{height:25px;width:25px;border:2px solid #ffffff25;background:var(--swatch);border-radius:50%}.detail-note{color:var(--muted);font-size:10px;line-height:1.9}aside .primary{width:100%}#import-dialog{width:460px;max-width:92vw;padding:32px}#import-dialog h2{font-weight:400}#import-dialog p{font-size:12px;color:var(--muted);line-height:1.9}.import-close{float:right}.file-label{display:block;text-align:center;padding:30px 15px;border:1px dashed var(--accent);margin:25px 0;color:var(--accent);cursor:pointer}.file-label input{display:block;max-width:100%;font-size:11px;margin:20px auto 0}#viewer-error{position:absolute;inset:40% 15%;color:#f2c5a7;background:#20251e;padding:20px;z-index:2}button:hover{filter:brightness(1.15)}[hidden]{display:none!important}@media(min-width:1500px){.hero{min-height:640px}}@media(max-width:950px){.availability{display:none}.hero{gap:22px;min-height:500px}.hero-art{min-height:480px}.hero-foot{font-size:7px}.detail-layout{grid-template-columns:1fr 270px}aside{padding:25px 20px}.gallery{gap:30px 17px}.brand small{display:none}}@media(max-width:650px){header{height:78px}nav{gap:16px;font-size:11px}nav a:nth-child(2){display:none}.hero{grid-template-columns:1fr;margin:25px 0 50px}.hero-copy{padding-top:5px}h1{font-size:48px;margin:20px 0 12px}.hero-foot{margin-top:25px;padding:0}.hero-art{min-height:440px}.section-heading h2{font-size:23px}.section-heading>p{display:none}.filter-bar{align-items:start;flex-direction:column;margin-top:22px;gap:15px}.filters{gap:0}.filters button{padding:8px 12px}.gallery{grid-template-columns:repeat(2,1fr);gap:28px 14px}.card h3{font-size:14px}.card p{font-size:9px;letter-spacing:0}.card-index{top:10px;left:10px}.card-360{font-size:8px;right:8px;bottom:8px}.about{margin-top:45px}.about>span{position:static;display:block;margin-top:25px}footer{gap:15px;flex-wrap:wrap}footer span{font-size:10px}.detail-layout{grid-template-columns:1fr}.viewport{min-height:420px}.detail-top{padding:15px}.detail-top .brand{font-size:17px}aside{padding:25px}.viewer-controls{gap:4px}.viewer-controls button{padding:9px}.view-presets{top:44px}.viewer-badge{top:16px}#detail{max-height:94dvh}.gesture{font-size:9px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

.share-button{position:fixed;right:24px;bottom:24px;z-index:5;background:#d5ef89;color:#263016;border:0;border-radius:30px;padding:13px 21px;box-shadow:0 5px 25px #0005;font-size:12px}#share-message{position:fixed;right:24px;bottom:82px;max-width:min(360px,88vw);z-index:10;background:#30382a;color:#e3edda;border:1px solid #697757;padding:18px;font-size:12px;line-height:1.8;overflow-wrap:anywhere}@media(max-width:650px){.share-button{right:15px;bottom:max(15px,env(safe-area-inset-bottom))}footer{padding-bottom:85px}}


.brand-story{max-width:760px}.services{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:32px 0}.services article{padding:24px;background:var(--panel);border:1px solid var(--line)}.services small{font-size:9px;letter-spacing:1.5px;color:var(--accent)}.services h3{font-size:17px;font-weight:500;margin:16px 0 12px}.services p{font-size:12px;color:var(--muted);line-height:1.9;margin:0}.about .service-quote{font-size:12px;color:var(--accent)}@media(max-width:950px){header nav{gap:18px}}@media(max-width:650px){.services{grid-template-columns:1fr;gap:12px}.services article{padding:22px}.hero h1{font-size:clamp(32px,8.3vw,48px)}header .brand{font-size:19px;gap:5px}header .brand-icon{font-size:30px}header nav{gap:12px}}
#admin-dialog{width:1000px;max-width:96vw;max-height:94dvh}#admin-dialog .detail-top h2{margin-right:auto}#admin-dialog .detail-top #logout{margin-left:16px;padding:7px 11px;border:1px solid #58634c;background:#30382a;color:var(--text);font-size:12px}#admin-dialog .detail-top h2{font-size:20px;font-weight:500}#admin-status{margin:18px 26px;color:var(--accent);font-size:13px;line-height:1.7}.admin-form{padding:24px;display:grid;gap:17px;border-top:1px solid var(--line)}.admin-form h3{margin:0;font-size:18px;font-weight:500}.admin-form label{display:grid;gap:9px;font-size:12px;color:var(--muted)}.admin-form input,.admin-form textarea{min-width:0;width:100%;background:#242922;border:1px solid #4c5546;color:var(--text);padding:11px;font:inherit;font-size:14px}.admin-form input[type=color]{width:70px;height:40px;padding:3px}.admin-form .primary{margin:0;justify-self:start}.admin-toolbar{display:flex;flex-wrap:wrap;gap:12px;padding:10px 24px}.admin-toolbar button,.admin-actions button,.password-settings button{padding:9px 12px;background:#30382a;color:var(--text);border:1px solid #58634c;font-size:12px}.admin-help{margin:14px 24px;color:var(--muted);font-size:12px;line-height:1.8}#admin-list{padding:0 24px 24px}.admin-row{display:grid;grid-template-columns:64px 1fr auto;align-items:center;gap:16px;border-bottom:1px solid var(--line);padding:16px 0}.admin-row img{width:64px;height:64px;object-fit:cover}.admin-row strong{display:block;font-size:14px;font-weight:500;overflow-wrap:anywhere}.admin-row small{display:block;margin-top:8px;color:var(--muted);font-size:11px}.admin-actions{display:flex;gap:6px;flex-wrap:wrap}.admin-files{display:grid;grid-template-columns:1fr 1fr;gap:20px}.password-settings{margin:24px;border:1px solid var(--line)}.password-settings summary{padding:16px;cursor:pointer;font-size:13px}button:disabled{opacity:.4;cursor:default}@media(max-width:650px){.admin-row{grid-template-columns:54px 1fr;gap:12px}.admin-row img{width:54px;height:54px}.admin-actions{grid-column:1/-1}.admin-files{grid-template-columns:1fr}.admin-form{padding:20px}#admin-dialog .detail-top h2{font-size:17px}}
#detail .viewport{background:radial-gradient(ellipse at 50% 42%,#fffef8 0%,#f5f0e6 52%,#e8dfd0 100%)}
#detail .viewer-badge{color:#555b49}#detail .viewer-badge i{background:#7b8a55}#detail .viewer-badge>span,#detail .gesture{color:#6e7265}
#detail .view-presets button,#detail .viewer-controls button{color:#4f5844;border-color:#c2c4b2;background:#fffdf3ed;box-shadow:0 2px 8px #6c604010}
#detail .viewer-controls button[aria-pressed=true]{color:#3c5128;border-color:#8b9b68;background:#e5edcf}

.header-bookmark{display:flex;align-items:center;justify-content:flex-end;gap:14px;font-size:12px}.site-address{color:var(--muted);white-space:nowrap}#bookmark-site{border:1px solid var(--line);border-radius:4px;padding:9px 12px;background:var(--panel);color:var(--accent);white-space:nowrap}#bookmark-site:hover{border-color:var(--accent)}@media(max-width:650px){header{height:auto;min-height:78px;flex-wrap:wrap;gap:14px;padding-top:16px;padding-bottom:16px}.header-bookmark{width:100%;justify-content:space-between;gap:8px;font-size:11px}}

footer{display:grid;grid-template-columns:1fr auto 1fr;align-items:center}footer>a:last-of-type{justify-self:end}.footer-contact{margin:0;text-align:center}.footer-contact img{display:block;width:160px;max-width:100%;height:auto;margin:0 auto;background:#fff}.footer-contact figcaption{margin-top:10px;font-size:12px;color:var(--muted)}@media(max-width:650px){footer{grid-template-columns:1fr 1fr}.footer-contact{grid-column:1/-1;grid-row:2;justify-self:center}footer>a:last-of-type{grid-column:2;grid-row:1}}

@media(max-width:650px){.viewer-controls{width:calc(100% - 24px);justify-content:center;flex-wrap:wrap}}

/* Keep navigation above the active module and portfolio list. */
#admin-panel>.admin-toolbar{position:sticky;top:0;z-index:6;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:nowrap;overflow-x:auto;padding:14px 24px}
#admin-panel>.admin-toolbar button{flex-shrink:0;white-space:nowrap}
#admin-module{scroll-margin-top:80px}
#admin-module [hidden]{display:none!important}
#admin-preview{padding:24px}
#admin-preview h2{font-size:26px}
#admin-preview p{line-height:1.8;color:var(--muted)}
.model-python-converter{border-top:1px solid var(--line);margin-top:28px;padding-top:24px}
.model-python-converter h2{font-size:22px;margin:8px 0}
.model-python-converter .file-label{text-align:left;padding:16px;margin:18px 0}
.converter-name{display:block;font-size:12px;color:var(--muted)}
.converter-name input{display:block;width:min(100%,420px);margin-top:8px;padding:10px;border:1px solid var(--line);background:var(--panel);color:var(--text);font:inherit}
.model-python-converter .primary{width:max-content;max-width:100%;margin:18px 0 0;gap:18px}
.converter-divider{border-top:1px solid var(--line);margin-top:28px;padding-top:24px}
.model-python-converter h3{font-size:16px;font-weight:500;margin:8px 0}
#admin-works{border-top:1px solid var(--line)}
.admin-work-filters{margin:0 24px 18px;padding:14px;display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;align-items:end;border:1px solid var(--line)}.admin-work-filters label{display:grid;gap:6px;color:var(--muted);font-size:11px}.admin-work-filters input{min-width:0;width:100%;padding:8px;background:#242922;border:1px solid #4c5546;color:var(--text);font:inherit;font-size:13px}.admin-work-filters button{min-height:34px;padding:7px 12px;background:#30382a;color:var(--text);border:1px solid #58634c;font:inherit;font-size:12px}@media(max-width:650px){.admin-work-filters{margin:0 16px 16px;grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Navigation stays outside the scrolling module area, including first open. */
#admin-dialog[open]{display:flex;flex-direction:column;overflow:hidden;position:fixed;inset:3vh 0 auto;margin:0 auto;height:94vh;max-height:94vh;inset-block-start:3dvh;height:94dvh;max-height:94dvh}
#admin-dialog>.detail-top,#admin-status{flex-shrink:0}
#admin-status{height:3.4em;min-height:3.4em;max-height:3.4em;margin:8px 26px;overflow-y:auto;overflow-wrap:anywhere;scrollbar-gutter:stable;overscroll-behavior:contain}
#admin-panel{display:flex;flex:1;flex-direction:column;min-height:0;overflow:hidden}
#admin-panel>.admin-toolbar{position:static;flex-shrink:0}
#admin-content{flex:1;min-height:0;overflow-y:auto;overflow-anchor:none;overscroll-behavior:contain;scrollbar-gutter:stable;scroll-behavior:auto}
#admin-login{min-height:0;overflow-y:auto;scrollbar-gutter:stable;overscroll-behavior:contain}
#admin-dialog>.detail-top{gap:8px}
#admin-dialog>.detail-top h2{min-width:0}
#admin-dialog>.detail-top button{flex-shrink:0}
@media(max-height:600px){#admin-dialog>.detail-top{padding:8px 16px}#admin-dialog>.detail-top h2{margin-top:4px;margin-bottom:4px}#admin-status{margin:4px 16px}#admin-panel>.admin-toolbar{padding:6px 16px;gap:2px}.admin-toolbar-row{padding:0}}
#admin-module{scroll-margin-top:0}

header .brand-logo{display:block;width:48px;height:54px;object-fit:contain;flex-shrink:0;border-radius:5px}@media(max-width:650px){header .brand-logo{width:36px;height:40px}}

.public-display-host{width:100%;height:clamp(280px,60vh,620px);background:#f8f3e9;position:relative}.public-display-host canvas{width:100%;height:100%;display:block;touch-action:none}.public-display-host video{width:100%;height:100%;object-fit:contain}

#detail .detail-code{font-size:12px;line-height:1.5;color:var(--muted);letter-spacing:1px;margin:16px 0 6px}#detail .detail-code:not([hidden])+h2{margin-top:0}

.hero h1 .hero-service{display:block;white-space:nowrap}.hero h1 .hero-service:nth-of-type(2){margin-left:1em}.hero h1 .hero-service:nth-of-type(3){margin-left:2em}

.about-slogan-second{display:block;margin-left:2em}

.admin-toolbar{flex-direction:column;align-items:stretch;gap:8px;overflow-x:visible}.admin-toolbar-row{display:flex;align-items:center;gap:10px;overflow-x:auto;min-width:0;padding:2px 0}.admin-toolbar-label{flex:0 0 32px;font-size:12px;color:var(--muted)}

/* Let the independent public-display disclosure use the full row and wrap on narrow screens. */
.admin-row>details{grid-column:1/-1;width:100%;min-width:0}
.admin-row>details>summary{width:100%;min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:1.6;cursor:pointer}
.admin-row>details[open]>.public-display-upload{width:100%;min-width:0}
.public-display-upload>*{min-width:0;max-width:100%}
.admin-access-logs{padding:24px}.admin-access-log{padding:12px 0;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted);overflow-wrap:anywhere}
.works-loading{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:16px;min-height:180px;color:var(--muted);font-size:13px}.works-loading img{object-fit:contain;flex-shrink:0}

.footer-registration{grid-column:1/-1;grid-row:3;margin:20px 0 0;text-align:center;font-size:12px;color:var(--muted)}.footer-registration a:hover{text-decoration:underline;color:var(--text)}
