:root { --ink:#eef7ff; --muted:#8294a8; --line:rgba(137,195,229,.2); --cyan:#7de4ff; --navy:#050c16; --panel:#091523; --error:#ff9c9c; color-scheme:dark; }
* { box-sizing:border-box; }
html { background:var(--navy); scroll-behavior:smooth; }
body { margin:0; min-width:320px; color:var(--ink); background:radial-gradient(circle at 75% 8%, rgba(27,114,151,.14), transparent 27rem), var(--navy); font-family:"Noto Sans JP",sans-serif; }
button,input,select,textarea { font:inherit; }
a { color:inherit; }
.skip-link { position:fixed; top:-5rem; left:1rem; z-index:20; padding:.8rem 1rem; background:white; color:#05101c; }
.skip-link:focus { top:1rem; }
.topbar { height:78px; padding:0 clamp(20px,4vw,64px); border-bottom:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; }
.brand { display:flex; gap:13px; text-decoration:none; align-items:center; }
.brand-mark { color:var(--cyan); font-size:28px; }
.brand span:last-child { display:grid; gap:3px; }
.brand b,.brand small,.eyebrow,.connection-status,.section-heading span,.view-number,.kpi-strip small,footer { font-family:"DM Mono",monospace; letter-spacing:.09em; }
.brand b { font-size:13px; }.brand small { font-size:8px; color:var(--muted); }
.connection-status { font-size:10px; color:var(--muted); }.connection-status i { display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:7px; background:#86909b; }.connection-status.ready i{background:#57e6a5;box-shadow:0 0 12px #57e6a5}.connection-status.error i{background:#ff8787}
main { width:min(1440px,100%); margin:auto; padding:0 clamp(20px,4vw,64px) 80px; }
.intro { padding:clamp(58px,8vw,115px) 0 70px; border-bottom:1px solid var(--line); }
.eyebrow { margin:0 0 22px; color:var(--cyan); font-size:10px; }
h1 { margin:0; font-size:clamp(36px,7vw,94px); line-height:1.08; letter-spacing:-.055em; font-weight:500; overflow-wrap:anywhere; }
h1 em { color:transparent; -webkit-text-stroke:1px rgba(159,226,255,.86); font-style:normal; }
.lead { max-width:680px; margin:32px 0 44px; font-size:clamp(14px,1.5vw,17px); line-height:2; color:#aab8c7; }
.kpi-strip { display:flex; align-items:center; gap:clamp(14px,3vw,34px); }.kpi-strip div { display:grid; gap:5px; }.kpi-strip small{font-size:8px;color:var(--muted)}.kpi-strip strong{font-family:"DM Mono";font-size:22px;font-weight:400}.kpi-strip>span{color:#4d6173}.kpi-strip .target strong{color:var(--cyan)}.kpi-strip .achieved strong{color:#9ce5c6;text-shadow:0 0 18px rgba(87,230,165,.25)}
.access-panel{display:flex;align-items:center;justify-content:space-between;gap:32px;padding:24px 0;border-bottom:1px solid var(--line)}.access-panel>div:first-child{max-width:680px}.access-kicker{margin:0 0 8px;font:8px "DM Mono",monospace;letter-spacing:.13em;color:var(--cyan)}.access-panel h2{font-size:16px}.access-panel p:not(.access-kicker){margin:8px 0 0;font-size:10px;line-height:1.75;color:var(--muted)}.access-actions{display:grid;justify-items:end;gap:9px;flex:0 0 auto}.access-badge{padding:5px 8px;border:1px solid var(--line);font:8px "DM Mono",monospace;letter-spacing:.08em;color:var(--muted)}.access-badge.owner{border-color:rgba(87,230,165,.45);color:#9ce5c6}.owner-login,.owner-logout{border:0;border-bottom:1px solid rgba(125,228,255,.5);padding:7px 0;background:transparent;color:var(--cyan);font:9px "DM Mono",monospace;text-decoration:none;cursor:pointer}.owner-login b{margin-left:8px}.owner-logout{color:var(--muted)}
.workspace { display:grid; grid-template-columns:minmax(0,1.02fr) minmax(400px,.98fr); border-bottom:1px solid var(--line); }
.input-panel,.result-panel { padding:54px 0 64px; min-width:0; }.input-panel { padding-right:clamp(28px,4vw,68px); border-right:1px solid var(--line); }.result-panel{padding-left:clamp(28px,4vw,68px)}
.section-heading { display:flex; justify-content:space-between; align-items:flex-end; gap:20px; margin-bottom:34px; }.section-heading>div{display:flex;align-items:baseline;gap:15px}.section-heading span{font-size:10px;color:var(--cyan)}h2{margin:0;font-size:22px;font-weight:500;letter-spacing:-.03em}.section-heading p{margin:0;font-size:10px;color:var(--muted);text-align:right}
.section-heading .input-heading-actions{display:grid;justify-items:end;gap:7px}.input-heading-actions button{padding:6px 9px;border:1px solid var(--line);background:transparent;color:var(--cyan);font-size:8px;cursor:pointer}.input-heading-actions button:disabled{opacity:.5;cursor:wait}
.upload-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:12px; }
.upload-card { position:relative; min-height:235px; padding:16px; border:1px solid var(--line); background:rgba(12,28,44,.55); cursor:pointer; overflow:hidden; transition:border-color .2s,background .2s; }.upload-card:hover,.upload-card:focus-within{border-color:rgba(125,228,255,.7);background:rgba(14,37,55,.76)}.upload-card input{position:absolute;opacity:0;pointer-events:none}.view-number{display:block;font-size:8px;color:var(--muted);position:relative;z-index:2}.upload-card .preview{display:grid;place-items:center;height:150px;margin:-5px 0 2px;border-bottom:1px solid var(--line);overflow:hidden}.preview b{font-size:26px;color:#4d7187;font-weight:300}.preview img{width:100%;height:100%;object-fit:contain}.upload-card strong{display:block;margin-top:13px;font-size:13px;font-weight:500}.upload-card small{display:block;margin-top:4px;font-size:9px;color:var(--muted)}.upload-card.has-image{border-color:rgba(125,228,255,.48)}.upload-card.has-image .view-number{color:var(--cyan)}
.upload-card .image-quality{min-height:1.35em;font-family:"DM Mono",monospace;font-size:7px;color:var(--cyan)}.upload-card.low-resolution{border-color:rgba(231,186,100,.65)}.upload-card.low-resolution .image-quality{color:#f0cc86}
.options{display:grid;grid-template-columns:1fr 1fr;margin-top:18px;border:1px solid var(--line)}.options label{position:relative;display:grid;grid-template-columns:auto 1fr;column-gap:10px;padding:15px;cursor:pointer}.options label+label{border-left:1px solid var(--line)}.options input{accent-color:var(--cyan);grid-row:1/3}.options span{font-size:11px}.options small{font-size:8px;color:var(--muted);margin-top:3px}.options .density-option{grid-template-columns:1fr}.density-option select{width:100%;margin-top:7px;padding:8px;border:1px solid var(--line);border-radius:0;background:var(--navy);color:var(--white);font:10px "DM Mono",monospace}
.generate-button { width:100%; border:0; margin-top:18px; padding:18px 20px; display:flex;justify-content:space-between;color:#06101a;background:var(--cyan);font-weight:600;cursor:pointer}.generate-button:disabled{cursor:wait;opacity:.45}.cost-note{font-size:9px;line-height:1.7;color:var(--muted);margin:10px 0 0}.usage-summary{margin:6px 0 0;font:8px/1.6 "DM Mono",monospace;color:var(--cyan)}.form-message{margin-top:16px;padding:12px 14px;border:1px solid rgba(255,156,156,.35);color:var(--error);font-size:11px;line-height:1.6}.form-message[data-type="success"]{border-color:rgba(156,229,198,.35);color:#9ce5c6}
.empty-result{min-height:522px;display:grid;place-content:center;text-align:center;color:var(--muted);font-size:12px;line-height:1.8}.orb{width:130px;height:130px;margin:0 auto 30px;border:1px solid rgba(125,228,255,.2);border-radius:50%;position:relative;animation:spin 15s linear infinite}.orb i{position:absolute;inset:15px;border:1px solid rgba(125,228,255,.16);border-radius:50%;transform:rotateX(65deg)}.orb i:nth-child(2){transform:rotateY(65deg)}.orb i:nth-child(3){inset:48px;background:rgba(125,228,255,.15);box-shadow:0 0 30px rgba(125,228,255,.28)}@keyframes spin{to{transform:rotate(360deg)}}
.progress-result{min-height:522px;align-content:center}.progress-visual{font-family:"DM Mono";display:flex;align-items:flex-start;justify-content:center}.progress-visual span{font-size:88px;font-weight:300;letter-spacing:-.08em}.progress-visual small{color:var(--cyan);margin-top:20px}.progress-copy{text-align:center;margin-top:15px}.progress-copy strong{font-size:14px}.progress-copy p{font-size:10px;color:var(--muted)}.progress-bar{height:2px;background:rgba(255,255,255,.1);margin:30px auto 0;width:min(360px,80%)}.progress-bar i{display:block;height:100%;width:0;background:var(--cyan);box-shadow:0 0 12px var(--cyan);transition:width .4s}
.model-result model-viewer{width:100%;height:480px;background:radial-gradient(circle,rgba(43,97,122,.18),transparent 60%);border:1px solid var(--line);--poster-color:transparent}.model-variants,.view-presets{display:grid;border:1px solid var(--line);border-top:0}.model-variants{grid-template-columns:1fr 1fr}.view-presets{grid-template-columns:repeat(4,1fr)}.model-variants button,.view-presets button{border:0;border-left:1px solid var(--line);padding:10px 6px;background:transparent;color:var(--muted);font:inherit;font-size:9px;cursor:pointer}.model-variants button:first-child,.view-presets button:first-child{border-left:0}.model-variants button.active,.view-presets button.active{background:var(--cyan);color:#06101a}.viewer-help{display:flex;gap:18px;justify-content:center;padding:10px;font-size:8px;color:var(--muted)}.download-row{display:grid;grid-template-columns:1.5fr repeat(3,1fr);border:1px solid var(--line);margin-top:14px}.download-row a{padding:13px 15px;text-decoration:none;display:flex;align-items:center;justify-content:space-between;font-size:11px}.download-row a span{display:grid;gap:3px}.download-row a small{font:7px "DM Mono",monospace;color:var(--muted)}.download-row a+a{border-left:1px solid var(--line)}.download-row .primary-download{background:var(--cyan);color:#06101a;font-weight:600}.download-row .primary-download small{color:rgba(6,16,26,.65)}.signed-url-note{margin:9px 0 0;font-size:8px;color:var(--muted)}
.generation-history{margin-top:22px;border-top:1px solid var(--line);padding-top:16px}.history-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.history-heading strong{font-size:11px}.history-heading>div{display:flex;align-items:center;gap:10px}.history-heading span{font-size:8px;color:var(--muted)}.history-heading a{font-size:8px;color:var(--cyan);text-decoration:none;border-bottom:1px solid rgba(125,228,255,.35)}.generation-history-list{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.history-item{display:grid;gap:4px;text-align:left;padding:12px;border:1px solid var(--line);background:transparent;color:var(--ink);font:inherit;cursor:pointer}.history-item span,.history-item small{font-size:8px;color:var(--muted)}.history-item strong{font-size:10px}.history-item.active{border-color:var(--cyan);box-shadow:inset 3px 0 0 var(--cyan)}
.comparison-panel{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}.comparison-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.comparison-grid article{padding:13px;border:1px solid var(--line)}.comparison-grid article.recommended{border-color:rgba(125,228,255,.55);background:rgba(125,228,255,.04)}.comparison-grid small{font:8px "DM Mono",monospace;color:var(--muted)}.comparison-grid strong{display:block;margin-top:7px;font:10px "DM Mono",monospace}.comparison-grid p{margin:5px 0 0;font-size:8px;line-height:1.6;color:var(--muted)}.comparison-decision{margin:9px 0 0;font-size:9px;line-height:1.7;color:var(--cyan)}
.printability-summary{display:grid;gap:6px;padding:12px 14px;border:1px solid var(--line);border-top:0;background:rgba(255,255,255,.025)}.printability-summary>div{display:flex;justify-content:space-between;align-items:center}.printability-summary strong{font-size:10px}.printability-summary span{padding:3px 7px;border:1px solid var(--line);font-size:8px}.printability-summary[data-status="error"] span{border-color:#ff6b6b;color:#ff9a9a}.printability-summary[data-status="warning"] span{border-color:#e7ba64;color:#f0cc86}.printability-summary[data-status="healthy"] span{border-color:#78d6af;color:#9ce5c6}.printability-summary p{margin:0;font-size:8px;color:var(--muted)}
.prepare-print-button{width:100%;margin-top:10px;padding:13px 15px;border:1px solid var(--cyan);background:transparent;color:var(--cyan);display:flex;justify-content:space-between;align-items:center;font:inherit;cursor:pointer}.prepare-print-button span{font-size:11px;font-weight:600}.prepare-print-button small{font-size:8px;color:var(--muted)}.prepare-print-button:disabled{cursor:wait;opacity:.5}
.analyze-print-button{width:100%;margin-top:8px;padding:11px 15px;border:1px solid var(--line);background:transparent;color:var(--ink);display:flex;justify-content:space-between;align-items:center;font:inherit;cursor:pointer}.analyze-print-button span{font-size:10px}.analyze-print-button small{font-size:8px;color:var(--muted)}.analyze-print-button:disabled{cursor:wait;opacity:.5}
.retry-generation-button{width:100%;margin-top:8px;padding:11px 15px;border:1px dashed var(--line);background:transparent;color:var(--ink);display:flex;justify-content:space-between;align-items:center;font:inherit;cursor:pointer}.retry-generation-button span{font-size:10px}.retry-generation-button small{font-size:8px;color:var(--muted)}.retry-generation-button:disabled{cursor:wait;opacity:.5}
.result-message{min-height:1.5em;margin:9px 0 0;font-size:9px;line-height:1.6;color:var(--muted)}.result-message[data-type="success"]{color:#9ce5c6}.result-message[data-type="error"]{color:var(--error)}
.workflow-recommendation{padding:13px 14px;border:1px solid rgba(80,223,234,.28);border-top:0;background:rgba(80,223,234,.055)}.workflow-recommendation strong{font-size:10px;color:var(--cyan)}.workflow-recommendation p{margin:5px 0 0;font-size:9px;line-height:1.65;color:var(--muted)}.technical-summary{padding:11px 14px;border:1px solid var(--line);border-top:0}.technical-summary>span{display:block;margin-bottom:5px;font-size:8px;color:var(--muted)}.technical-summary>div{font-family:"DM Mono",monospace;font-size:9px;line-height:1.6;color:var(--ink)}
.scale-summary{display:grid;grid-template-columns:1fr auto;gap:7px 14px;padding:12px 14px;border:1px solid rgba(231,186,100,.4);border-top:0;background:rgba(231,186,100,.045)}.scale-summary>div{grid-column:1/-1;display:flex;justify-content:space-between;gap:12px}.scale-summary strong{font-size:10px;color:#f0cc86}.scale-summary span{font-size:8px;color:var(--muted)}.scale-summary label{font-size:9px}.scale-summary input{width:72px;padding:5px}.scale-summary p{margin:0;font-size:9px;color:var(--muted)}.scale-summary b{color:#f0cc86}
.print-checklist{padding:12px 14px;border:1px solid var(--line);border-top:0}.print-checklist strong{font-size:9px}.print-checklist ul{display:grid;grid-template-columns:1fr 1fr;gap:7px 18px;margin:9px 0;padding:0;list-style:none}.print-checklist li{font-size:8px;line-height:1.5;color:var(--muted)}.print-checklist label{display:flex;align-items:flex-start;gap:6px;cursor:pointer}.print-checklist input{margin:1px 0 0;accent-color:var(--cyan)}.print-checklist>small{font-size:7px;color:var(--muted)}
.evaluation-section{padding:60px 0}.rating-grid{display:grid;grid-template-columns:repeat(6,1fr);border:1px solid var(--line)}.rating-grid label{display:grid;grid-template-columns:1fr auto;align-items:center;padding:14px;font-size:11px}.rating-grid label+label{border-left:1px solid var(--line)}select,input,textarea{border:1px solid var(--line);background:#07111c;color:var(--ink);border-radius:0}.rating-grid select{width:48px;padding:7px}.hours-field,.comment-field{display:flex;justify-content:space-between;gap:20px;padding:20px 0;border-bottom:1px solid var(--line);font-size:12px}.hours-field input{width:95px;padding:10px;margin-right:6px}.comment-field{display:grid}.comment-field textarea{padding:14px;resize:vertical;line-height:1.7}.milestone-field{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin:20px 0 0;padding:0;border:1px solid var(--line);background:var(--line)}.milestone-field legend{padding:0 0 9px;font-size:10px;color:var(--muted)}.milestone-field label{display:flex;align-items:center;gap:8px;padding:13px;background:var(--navy);font-size:10px}.milestone-field input{accent-color:var(--cyan)}.evaluation-foot{display:flex;align-items:center;justify-content:space-between;margin-top:18px;gap:20px}.evaluation-foot p{font-size:10px;color:var(--cyan)}.evaluation-foot button{border:1px solid var(--cyan);background:transparent;color:var(--cyan);padding:13px 24px;cursor:pointer}
.options{grid-template-columns:repeat(3,1fr)}
.comparison-grid{grid-template-columns:repeat(3,1fr)}
.history-item:has(.history-thumbnail){grid-template-columns:54px 1fr;align-items:center}.history-item>div{display:grid;gap:4px}.history-thumbnail{width:54px;height:54px;object-fit:cover;border:1px solid var(--line);background:var(--panel)}
.enhancement-comparison-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.enhancement-comparison-grid button{display:grid;grid-template-columns:80px 1fr;gap:12px;align-items:center;padding:10px;border:1px solid var(--line);background:transparent;color:var(--ink);text-align:left;cursor:pointer}.enhancement-comparison-grid img{width:80px;height:80px;object-fit:cover;background:var(--panel)}.enhancement-comparison-grid span{display:grid;gap:5px}.enhancement-comparison-grid small,.enhancement-comparison-grid em{font:8px "DM Mono",monospace;color:var(--muted);font-style:normal}.enhancement-comparison-grid strong{font-size:10px}
.rating-guide{margin:0 0 10px;font-size:9px;color:var(--muted)}
footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;padding:25px clamp(20px,4vw,64px);font-size:8px;color:var(--muted)}
[hidden]{display:none!important}
@media(max-width:900px){.workspace{grid-template-columns:1fr}.input-panel{border-right:0;border-bottom:1px solid var(--line);padding-right:0}.result-panel{padding-left:0}.rating-grid{grid-template-columns:repeat(3,1fr)}.rating-grid label:nth-child(4){border-left:0}.rating-grid label:nth-child(n+4){border-top:1px solid var(--line)}.milestone-field{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.topbar{height:68px}.connection-status{font-size:0}.connection-status i{margin:0}.intro{padding-top:52px}.lead{line-height:1.85}.access-panel{align-items:flex-start;flex-direction:column;gap:18px}.access-actions{width:100%;justify-items:start}.owner-login{width:100%;display:flex;justify-content:space-between}.upload-grid{gap:8px}.upload-card{min-width:0;min-height:205px;padding:12px}.upload-card .preview{height:124px}.options{grid-template-columns:1fr}.options label+label{border-left:0;border-top:1px solid var(--line)}.section-heading{align-items:flex-start}.section-heading>div{min-width:0}.section-heading p{max-width:135px}.empty-result,.progress-result{min-height:430px}.model-result model-viewer{height:420px}.viewer-help{flex-wrap:wrap}.download-row{grid-template-columns:1fr 1fr}.download-row a:nth-child(3){border-left:0}.download-row a:nth-child(n+3){border-top:1px solid var(--line)}.prepare-print-button,.analyze-print-button,.retry-generation-button{align-items:flex-start;flex-direction:column;gap:4px}.generation-history-list,.comparison-grid{grid-template-columns:1fr}.technical-summary>div{overflow-wrap:anywhere}.rating-grid{grid-template-columns:1fr 1fr}.rating-grid label:nth-child(3),.rating-grid label:nth-child(5){border-left:0}.rating-grid label:nth-child(n+3){border-top:1px solid var(--line)}.hours-field{display:grid}.comment-field{gap:10px}footer{flex-direction:column;gap:8px;line-height:1.6}footer span{overflow-wrap:anywhere}}
@media(max-width:560px){.print-checklist ul,.scale-summary{grid-template-columns:1fr}.scale-summary>div{display:grid}.scale-summary p{text-align:left}}
@media(max-width:560px){.enhancement-comparison-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.orb{animation:none}model-viewer{--progress-mask:transparent}}
