:root{--primary: #5667cc;--primary-dark: #454fb8;--text: #202637;--muted: #596079;--panel-bg: rgba(255, 255, 255, .72);--panel-border: rgba(92, 108, 194, .25)}*{box-sizing:border-box}body{margin:0;min-height:100vh;font-family:Inter,sans-serif;color:var(--text);background:linear-gradient(145deg,#f5f7ff,#ecf3ff 45%,#f7f9ff);overflow:hidden}code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;background:#5667cc1f;border-radius:6px;padding:.1rem .35rem}.page-bg{position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at 15% 20%,rgba(86,103,204,.16),transparent 34%),radial-gradient(circle at 82% 76%,rgba(70,144,214,.12),transparent 28%)}.app-shell{position:relative;z-index:1;width:100%;max-width:100%;height:100dvh;padding:.8rem;display:grid;grid-template-rows:auto 1fr;gap:.7rem;overflow:hidden}.topbar{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;padding:.5rem .35rem 0}.eyebrow{margin:0;color:var(--primary);font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}h1{margin:.25rem 0 0;font-family:Sora,sans-serif;font-size:clamp(1.45rem,3vw,2.4rem);line-height:1.15}.topbar-note{margin:0;max-width:520px;color:var(--muted);font-size:.95rem;text-align:right}.layout{position:relative;display:block;min-height:0;height:100%}.viewer-card,.info-card{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:20px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 24px 54px -40px #242e5c8c}.viewer-card{position:relative;overflow:hidden;height:100%}#viewer{width:100%;height:100%;min-height:0}.status{position:absolute;left:1rem;bottom:1rem;background:#141827b8;color:#f3f5ff;padding:.45rem .7rem;font-size:.82rem;border-radius:999px}.info-card{position:absolute;top:1rem;right:max(.75rem,env(safe-area-inset-right));z-index:5;width:clamp(280px,29vw,360px);max-width:calc(100% - 1.5rem);max-height:calc(100% - 2rem);padding:1rem;display:flex;flex-direction:column;gap:1rem;min-height:0;overflow:auto;background:#ffffffd6;box-shadow:0 24px 54px -40px #242e5cbf}.control-group{display:flex;flex-direction:column;gap:.45rem}label{font-weight:600;color:#374058}select,button,input[type=file]{font:inherit}select,button,input[type=file]{border:1px solid rgba(86,103,204,.2);border-radius:10px;padding:.62rem .75rem;background:#fffc;color:var(--text)}input[type=file]{cursor:pointer}button{cursor:pointer;transition:transform .15s ease,border-color .15s ease,background .15s ease}button:hover{transform:translateY(-1px);border-color:#5667cc73}button.primary,button.is-on{background:var(--primary);border-color:var(--primary);color:#fff}button.primary:hover,button.is-on:hover{background:var(--primary-dark)}.button-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.debug-box{border:1px dashed rgba(86,103,204,.35);border-radius:12px;padding:.8rem;background:#ffffff94}.debug-box h3{margin:0 0 .65rem;font-size:.9rem;color:#3f4a66}.debug-box .control-group label{font-size:.83rem}input[type=range]{width:100%;accent-color:var(--primary);padding:0}.meta{border:1px solid rgba(86,103,204,.14);border-radius:14px;padding:.9rem;background:#ffffffa3}.meta h2{margin:0;font-size:1.2rem;font-family:Sora,sans-serif}.meta-line{margin:.5rem 0 0;color:#3f4a66;font-size:.95rem}.meta p{margin-top:.7rem;color:#3e4863;line-height:1.55}.tags{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.8rem}.tag{background:#5667cc1f;border:1px solid rgba(86,103,204,.2);color:#2f3a71;border-radius:999px;padding:.25rem .6rem;font-size:.8rem;font-weight:600}.tips{border-top:1px dashed rgba(86,103,204,.3);padding-top:.8rem}.tips h3{margin:0;font-size:.95rem;color:#38425d}.tips p{margin:.5rem 0 0;color:#4d5672;font-size:.9rem}@media(max-width:1080px){body{overflow:auto}.layout{position:static;display:grid;grid-template-columns:1fr;grid-template-rows:minmax(48dvh,58dvh) auto;gap:.75rem;height:auto}#viewer{min-height:48dvh}.viewer-card{height:auto}.info-card{position:static;width:100%;max-height:none;max-width:100%;z-index:auto;background:var(--panel-bg);box-shadow:0 24px 54px -40px #242e5c8c}.topbar{flex-direction:column;align-items:flex-start}.topbar-note{text-align:left}}@media(max-width:640px){.app-shell{padding:.5rem;height:auto;min-height:100dvh}.button-grid{grid-template-columns:1fr}#viewer{min-height:52dvh}.topbar-note{font-size:.85rem}}
