:root{--bg-primary:#0f0f1a;--bg-secondary:#1a1a2e;--bg-card:#252542;--bg-card-hover:#2f2f52;--text-primary:#f0f0f5;--text-secondary:#a0a0b8;--accent:#6c8cff;--accent-hover:#8aa4ff;--danger:#ff6b6b;--border:rgba(255,255,255,0.08);--shadow:0 8px 32px rgba(0,0,0,0.4);--radius:16px;--radius-sm:10px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{height:100%;height:-webkit-fill-available}body,html{overflow-x:hidden}.simulation-view:-webkit-full-screen,html:-webkit-full-screen{width:100%;height:100%;background:#000}.simulation-view:-webkit-full-screen,.simulation-view:fullscreen,html:-webkit-full-screen,html:fullscreen{width:100%;height:100%;background:#000}body.simulation-active{overflow:hidden;position:fixed;inset:0;width:100vw;height:var(--app-height,100dvh);margin:0;padding:0}body{font-family:Hiragino Sans,Hiragino Kaku Gothic ProN,Noto Sans JP,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased}.mode-selector{height:var(--app-height,100dvh);max-height:var(--app-height,100dvh);overflow:hidden;display:flex;flex-direction:column;align-items:center;padding:calc(.75rem + env(safe-area-inset-top, 0px)) .75rem calc(.75rem + env(safe-area-inset-bottom, 0px));background:linear-gradient(160deg,var(--bg-primary) 0,var(--bg-secondary) 100%)}.hero{flex-shrink:0;text-align:center;width:100%;max-width:900px;margin-bottom:.6rem;position:relative}.share-button{position:absolute;top:0;right:0;display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;transition:background .15s}.share-button:hover{background:var(--bg-card-hover)}.share-icon{display:block}.share-overlay{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:rgba(0,0,0,.72);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.share-dialog{position:relative;width:100%;max-width:360px;padding:1.25rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);text-align:center}.share-close{position:absolute;top:.65rem;right:.65rem;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:1rem;cursor:pointer}.share-close:hover{background:var(--bg-card);color:var(--text-primary)}.share-dialog h2{font-size:1.05rem;font-weight:600;margin-bottom:.5rem}.share-note{font-size:.78rem;color:var(--text-secondary);line-height:1.45;margin-bottom:1rem}.share-qr-wrap{display:flex;align-items:center;justify-content:center;min-height:240px;margin-bottom:.85rem}.share-qr{display:block;border-radius:8px;background:#fff}.share-qr-loading{font-size:.85rem;color:var(--text-secondary)}.share-url{font-size:.72rem;color:var(--text-secondary);word-break:break-all;line-height:1.4;margin-bottom:.85rem;padding:.5rem .65rem;background:var(--bg-card);border-radius:var(--radius-sm);border:1px solid var(--border)}.share-copy-button{width:100%;padding:.75rem;background:var(--accent);border:none;border-radius:var(--radius-sm);color:#fff;font-size:.9rem;font-weight:600;cursor:pointer}.share-copy-button:hover{background:var(--accent-hover)}.hero h1{font-size:clamp(1.05rem,4.5vw,1.5rem);font-weight:700;letter-spacing:.02em;margin-bottom:.2rem;line-height:1.3}.subtitle{color:var(--text-secondary);font-size:clamp(.7rem,2.8vw,.85rem);line-height:1.3}.mode-grid{flex:1 1;min-height:0;display:grid;grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,1fr);grid-gap:clamp(.4rem,1.5vw,.65rem);gap:clamp(.4rem,1.5vw,.65rem);width:100%;max-width:900px}.mode-card:last-child:nth-child(odd){grid-column:1/-1;width:calc(50% - clamp(.2rem, .75vw, .325rem));justify-self:center}.mode-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;padding:clamp(.4rem,1.5vw,.75rem);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bg-card);background-image:none;border:1px solid var(--border);border-radius:clamp(10px,2vw,14px);cursor:pointer;text-align:center;color:var(--text-primary);transition:background-color .15s;box-shadow:var(--shadow);min-height:0}@media (hover:hover){.mode-card:hover{background-color:var(--bg-card-hover)}}.mode-card:active{background-color:var(--bg-card-hover);transform:scale(.98)}.mode-card:focus,.mode-card:focus-visible{background-color:var(--bg-card);outline:2px solid rgba(108,140,255,.55);outline-offset:2px}.mode-card:focus-visible:active,.mode-card:focus:active{background-color:var(--bg-card-hover)}.mode-icon{font-size:clamp(1.4rem,5vw,2rem);line-height:1;opacity:.85}.mode-title{font-size:clamp(1rem,4.2vw,1.35rem);font-weight:600;line-height:1.25}.mode-description{display:none}@media (min-width:600px){.mode-selector{padding:calc(1.25rem + env(safe-area-inset-top, 0px)) 1.25rem calc(1.25rem + env(safe-area-inset-bottom, 0px))}.hero{margin-bottom:1rem}.mode-grid{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);gap:.65rem}.mode-card:last-child:nth-child(odd){grid-column:auto;width:auto;justify-self:stretch}.mode-card{align-items:flex-start;text-align:left;padding:.85rem;gap:.35rem}.mode-title{font-size:1.05rem}.mode-description{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:.68rem;color:var(--text-secondary);line-height:1.35}}@media (min-width:900px){.mode-description{display:block;-webkit-line-clamp:unset;font-size:.75rem}.mode-card{padding:1rem}.mode-title{font-size:1.15rem}}.mode-grid--disabled{opacity:.35;pointer-events:none}.mode-card:disabled{cursor:not-allowed}.license-footer{flex-shrink:0;width:100%;max-width:900px;text-align:center;padding-top:.3rem}.license-brand{font-size:.6rem;color:rgba(160,160,184,.5);letter-spacing:.06em;margin-bottom:.1rem}.license-details{font-size:.58rem;color:rgba(160,160,184,.42)}.license-details summary{cursor:pointer;list-style:none;display:inline-block;padding:.1rem 0;text-decoration:underline;-webkit-text-decoration-color:rgba(160,160,184,.25);text-decoration-color:rgba(160,160,184,.25);text-underline-offset:2px}.license-details summary::-webkit-details-marker{display:none}.license-body{margin-top:.4rem;padding:.5rem .65rem;background:rgba(0,0,0,.2);border-radius:8px;max-height:22vh;overflow-y:auto;text-align:left}.license-body h3{font-size:.62rem;font-weight:600;color:rgba(240,240,245,.65);margin-bottom:.25rem}.license-body ul{list-style:disc;padding-left:1rem;margin-bottom:.45rem}.license-body li{line-height:1.4;margin-bottom:.15rem}.license-oss-list a{color:rgba(108,140,255,.7);text-decoration:none}.license-oss-list a:hover{text-decoration:underline}.license-oss-note{line-height:1.4;margin-bottom:.35rem}.license-copy{text-align:center;margin-top:.35rem;color:rgba(160,160,184,.45)}.consent-overlay{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:rgba(0,0,0,.72);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.consent-dialog{width:100%;max-width:400px;max-height:85vh;overflow-y:auto;padding:1.25rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.consent-dialog h2{font-size:1rem;font-weight:600;margin-bottom:.75rem;text-align:center}.consent-list{list-style:disc;padding-left:1.15rem;font-size:.82rem;color:var(--text-secondary);line-height:1.55}.consent-list li{margin-bottom:.35rem}.consent-note{font-size:.75rem;color:var(--text-secondary);margin:.85rem 0 1rem;line-height:1.45}.consent-accept{width:100%;padding:.8rem;background:var(--accent);border:none;border-radius:var(--radius-sm);color:#fff;font-size:.95rem;font-weight:600;cursor:pointer}.consent-accept:hover{background:var(--accent-hover)}.consent-brand{margin-top:.75rem;text-align:center;font-size:.65rem;color:rgba(160,160,184,.5);letter-spacing:.06em}.simulation-view{position:fixed;top:var(--app-offset-top,0);left:0;width:var(--app-width,100vw);max-width:100vw;height:var(--app-height,100dvh);display:flex;flex-direction:column;background:#000;z-index:1000;overflow:hidden}.simulation-view.pseudo-fullscreen{top:0;left:0;width:100vw;height:100dvh;height:var(--app-height,100dvh)}.simulation-view:-webkit-full-screen,html:-webkit-full-screen .simulation-view{width:100vw;height:100vh;height:100dvh;top:0;left:0}.simulation-view:-webkit-full-screen,.simulation-view:fullscreen,html:-webkit-full-screen .simulation-view,html:fullscreen .simulation-view{width:100vw;height:100vh;height:100dvh;top:0;left:0}.simulation-header{padding:calc(.5rem + env(safe-area-inset-top, 0px)) .75rem .5rem;background:var(--bg-secondary);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:center;gap:1rem;flex-shrink:0;position:relative;width:100%}.simulation-header h2{font-size:1.1rem;font-weight:600}.fullscreen-button{position:absolute;left:.75rem;padding:.4rem .65rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:.75rem;cursor:pointer}.fullscreen-button:hover{background:var(--bg-card-hover)}.flip-camera-button{position:absolute;right:.75rem;padding:.4rem .75rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:.8rem;cursor:pointer;transition:background .15s}.flip-camera-button:hover:not(:disabled){background:var(--bg-card-hover)}.flip-camera-button:disabled{opacity:.5;cursor:not-allowed}.camera-container{position:relative;flex:1 1;width:100%;display:flex;align-items:stretch;justify-content:stretch;overflow:hidden;background:#000;min-height:0;touch-action:none}.mode-switch-toast{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:.65rem 1.1rem;background:rgba(0,0,0,.72);border:1px solid rgba(255,255,255,.15);border-radius:var(--radius-sm);color:var(--text-primary);font-size:1rem;font-weight:600;pointer-events:none;z-index:2;animation:mode-toast-fade 1.2s ease forwards}@keyframes mode-toast-fade{0%{opacity:0;transform:translate(-50%,-50%) scale(.96)}12%{opacity:1;transform:translate(-50%,-50%) scale(1)}75%{opacity:1}to{opacity:0}}.swipe-hint{flex-shrink:0;width:100%;padding:.2rem .75rem 0;font-size:.62rem;color:rgba(160,160,184,.55);text-align:center}.hidden-canvas,.hidden-video{display:none}.output-canvas{display:block;width:100%;height:100%;object-fit:cover;object-position:center}.fullscreen-hint{flex-shrink:0;width:100%;padding:.25rem .75rem;font-size:.65rem;color:rgba(160,160,184,.55);text-align:center;background:rgba(0,0,0,.5)}.loading-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.7);color:var(--text-secondary);font-size:.95rem}.error-message{color:var(--danger);font-size:.95rem}.error-panel{padding:2rem;text-align:center;display:flex;flex-direction:column;gap:1rem;align-items:center;max-width:400px}.back-button{padding:.65rem 1.25rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:.9rem;cursor:pointer}.back-button:hover{background:var(--bg-card-hover)}.controls-panel{flex-shrink:0;width:100%;padding:.75rem 1rem max(.75rem,env(safe-area-inset-bottom));background:var(--bg-secondary);border-top:1px solid var(--border);gap:1rem}.controls-panel,.slider-control{display:flex;flex-direction:column}.slider-control{gap:.4rem}.slider-label{display:flex;justify-content:space-between;align-items:center;font-size:.9rem;font-weight:500}.slider-value{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--accent);font-weight:600}.sliders-group{display:flex;flex-direction:column;gap:1rem}.slider-control input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;touch-action:pan-y;width:100%;height:6px;border-radius:3px;background:var(--bg-card);outline:none;cursor:pointer}.slider-control input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;border-radius:50%;background:var(--accent);cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.3);-webkit-transition:background .15s;transition:background .15s}.slider-control input[type=range]::-webkit-slider-thumb:hover{background:var(--accent-hover)}.slider-control input[type=range]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--accent);cursor:pointer;border:none;box-shadow:0 2px 6px rgba(0,0,0,.3)}.control-buttons{display:grid;grid-template-columns:1fr 1fr;grid-gap:.75rem;gap:.75rem;margin-top:.25rem}.secondary-button{padding:.85rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s}.secondary-button:hover{background:var(--bg-card-hover)}.exit-button{padding:.85rem;background:transparent;border:2px solid var(--danger);border-radius:var(--radius-sm);color:var(--danger);font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s,color .2s}.exit-button:hover{background:var(--danger);color:#fff}