:root{font-family:Inter,Noto Sans JP,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.5;color-scheme:light;--page:#f6f1ea;--paper:#fffaf3;--ink:#493a30;--muted:#796557;--line:#dfd1bf;--accent:#f4bb83;--button-ink:#51331e;--focus:#99501e;--track:#e9dfd3;--bar:#bd6f30;--x:#a63d42;--y:#287044;--z:#315db0;--confetti-0:#e8a054;--confetti-1:#d68d96;--confetti-2:#8caf9d;--confetti-3:#d7bb71;background:var(--page);color:var(--ink);font-synthesis:none}:root[data-theme=dark]{color-scheme:dark;--page:#1c201e;--paper:#242626;--ink:#ecede9;--muted:#b3bcb6;--line:#505956;--accent:#a8cbbb;--button-ink:#182b24;--focus:#a8cbbb;--track:#505956;--bar:#a8cbbb;--x:#f0a4a8;--y:#98cfa9;--z:#9dbdff;--confetti-0:#a8cbbb;--confetti-1:#bcacd7;--confetti-2:#8db6d8;--confetti-3:#c9bb83}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}button,select,input[type=number]{border:1px solid var(--line);border-radius:9px;min-height:44px;padding:9px 12px;background:var(--paper);color:var(--ink)}button{display:inline-flex;justify-content:center;align-items:center;gap:6px;cursor:pointer}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:3px}button:hover:not(:disabled){filter:brightness(.97)}h1,h2,p{margin:0}h1{font-size:1.3rem;font-weight:600;letter-spacing:.02em}h2{font-size:1.25rem;font-weight:500;margin-bottom:10px}label,legend{font-size:.875rem}input[type=number],select{font-size:1rem;min-width:0;width:100%}.app{margin:20px auto;padding:20px;width:calc(100% - 24px);max-width:430px;background:var(--paper);border:1px solid var(--line);border-radius:18px}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;min-height:44px}.icon-button{width:44px;height:44px;padding:10px;border:0;background:transparent}.icon-button svg{width:20px;height:20px}.workspace{display:grid;gap:28px;align-items:start}.controls{min-width:0}.primary{background:var(--accent);color:var(--button-ink);border-color:var(--accent)}.full{width:100%;margin-top:12px}.muted,.summary{color:var(--muted);font-size:.875rem}.summary{margin:12px 0}.axes-choice{padding:0;border:0;margin:20px 0 16px;min-width:0}.axes-choice legend{margin-bottom:8px}.axis-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.axis-options label{position:relative}.axis-options input{position:absolute;opacity:0;width:1px;height:1px}.axis-options label>span{display:flex;align-items:center;justify-content:center;gap:6px;min-height:48px;border:1px solid var(--line);border-radius:9px;padding:8px 3px;cursor:pointer}.axis-options b{font-weight:600}.axis-options small{visibility:hidden}.axis-options input:checked+span{border:2px solid var(--focus);padding:7px 2px}.axis-options input:checked+span small{visibility:visible}.axis-options input:focus-visible+span{outline:3px solid var(--focus);outline-offset:3px}.axis-X{color:var(--x)}.axis-Y{color:var(--y)}.axis-Z{color:var(--z)}.number-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.number-fields label{display:grid;gap:7px}.error{font-size:.875rem;color:var(--x);margin-top:6px}.progress-label{display:flex;justify-content:space-between;align-items:baseline;gap:24px;font-size:.875rem;margin-bottom:12px}.seconds{font-size:1.4rem;white-space:nowrap;font-variant-numeric:tabular-nums}.time-track{height:6px;border-radius:4px;background:var(--track);overflow:hidden}.time-track>div{height:100%;background:var(--bar);transform-origin:left}.last-seconds>div{animation:soft-pulse 1s ease-in-out infinite}.paused>div{animation-play-state:paused}@keyframes soft-pulse{0%,to{opacity:1}50%{opacity:0}}.angle{font-size:.8rem;color:var(--muted);margin:12px 0 16px;min-height:20px}.navigation{display:grid;grid-template-columns:1fr 1.35fr 1fr;gap:8px}.navigation button{padding:9px 5px;font-size:.875rem;white-space:nowrap}.quiet{border:0;background:transparent;color:var(--muted)}.exit{display:flex;margin:10px auto 0}.view-settings{margin-top:18px}.view-settings summary{min-height:44px;padding:10px 0;cursor:pointer;display:flex;align-items:center;justify-content:space-between;list-style:none;font-size:.875rem;color:var(--muted)}.view-settings summary::-webkit-details-marker{display:none}.view-settings[open] summary svg{transform:rotate(180deg)}.view-options{display:grid;gap:4px}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:52px;padding:4px 0}.setting-row select{width:118px;flex:none}.switch{position:relative;width:48px;height:28px;flex:none}.switch input{position:absolute;inset:-8px 0;width:48px;height:44px;opacity:0;margin:0;cursor:pointer}.switch>span{display:block;width:48px;height:28px;border-radius:16px;background:var(--line);box-shadow:inset 0 0 0 1px var(--muted);pointer-events:none}.switch>span:after{content:"";position:absolute;width:20px;height:20px;left:4px;top:4px;border-radius:50%;background:var(--muted);transition:transform .15s}.switch input:checked+span{background:var(--accent)}.switch input:checked+span:after{transform:translate(20px);background:var(--button-ink)}.switch input:focus-visible+span{outline:3px solid var(--focus);outline-offset:3px}.storage-warning{font-size:.8rem;color:var(--muted);margin-top:12px}.done{padding:8px 0}.model-view{position:relative;width:100%;aspect-ratio:1;border:1px solid var(--line);overflow:hidden;background:var(--paper)}.webgl-host{position:absolute;inset:0}.webgl-host canvas{display:block;width:100%;height:100%}.grid-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;transition:opacity .2s}.grid-overlay path{stroke:var(--muted);stroke-opacity:.35;stroke-width:.2;fill:none}.axis-labels{position:absolute;inset:0;pointer-events:none}.axis-label{position:absolute;transform:translate(-50%,-50%);font-size:.75rem;font-weight:600;line-height:1.2;padding:1px 3px;border-radius:3px;background:var(--paper)}.axis-label.selected{text-decoration:underline;text-underline-offset:3px}.axis-label[data-depth=behind]{border-bottom:1px dashed currentColor}.axis-labels[hidden]{display:none}.view-error{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:24px;background:var(--paper);z-index:10;font-size:.875rem;text-align:center}.view-error button{margin-top:16px}.celebration{position:absolute;inset:0;pointer-events:none}.cheer{position:absolute;bottom:7%;width:100%;text-align:center;display:grid;gap:5px;animation:cheer-in .6s ease-out both}.cheer strong{font-size:clamp(1.05rem,4vw,1.35rem);font-weight:600}.cheer span{font-size:.8rem;color:var(--muted)}@keyframes cheer-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.confetti{position:absolute;left:50%;top:35%}.confetti span{position:absolute;width:6px;height:5px;border-radius:1px;background:var(--confetti-color);animation:confetti-burst 1.8s ease-out var(--delay) both}.confetti span:nth-child(3n){border-radius:50%}@keyframes confetti-burst{0%{opacity:0;transform:translate(0) rotate(0)}15%{opacity:1}to{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--turn))}}@media(min-width:760px){.app{max-width:960px;padding:28px;margin:32px auto}.workspace{grid-template-columns:minmax(0,1.35fr) minmax(280px,1fr);gap:32px}.controls{padding-top:4px}header{margin-bottom:24px}}@media(max-width:759px)and (max-height:740px)and (orientation:portrait){.app{padding:14px;margin:8px auto}.model-view{width:min(100%,calc(100dvh - 330px));min-width:180px;justify-self:center}.workspace{gap:20px}header{margin-bottom:12px}.view-settings{margin-top:8px}}@media(orientation:landscape)and (max-height:600px){.app{max-width:900px;margin:8px auto;padding:12px 18px}header{margin-bottom:10px}.workspace{grid-template-columns:minmax(180px,1fr) minmax(260px,1fr);gap:24px}.model-view{width:min(100%,calc(100dvh - 106px));justify-self:center}.controls{padding:0}.angle{margin:7px 0 10px}.exit{margin-top:3px}.view-settings{margin-top:4px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.shape-choice{border:0;padding:0;margin:18px 0 0;min-width:0}.shape-choice legend{margin-bottom:8px}.shape-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.shape-options label{position:relative;min-width:0}.shape-options input{position:absolute;opacity:0;width:1px;height:1px}.shape-options label>span{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;min-height:76px;border:1px solid var(--line);border-radius:9px;padding:8px 2px;cursor:pointer}.shape-options svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linejoin:round}.shape-options b{font-size:.8rem;font-weight:500;white-space:nowrap}.shape-options small{position:absolute;right:3px;top:0;visibility:hidden}.shape-options input:checked+span{outline:2px solid var(--focus);outline-offset:-2px;background:var(--track)}.shape-options input:checked+span small{visibility:visible}.shape-options input:focus-visible+span{outline:3px solid var(--focus);outline-offset:3px}.shape-hint{margin-top:7px}.shape-options input{inset:0;width:100%;height:100%;margin:0;z-index:1;cursor:pointer}.shape-options{grid-template-columns:repeat(5,minmax(0,1fr))}.range-setting{display:grid;gap:6px;margin:12px 0;min-width:0}.range-setting>span{display:flex;justify-content:space-between;gap:8px}.range-setting output{color:var(--muted);font-variant-numeric:tabular-nums}.range-setting input{width:100%;min-width:0;min-height:32px;margin:0;accent-color:var(--focus);cursor:pointer}.range-ends{color:var(--muted)}.camera-setting{margin-top:16px}
