:root{--bg: #0f1419;--panel: #161c24;--panel2: #1d2530;--line: #2a3340;--text: #e6edf3;--muted: #95a3b3;--accent: #4f8cff;--accent2: #ffc107}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}#app{display:flex;height:100vh;height:100dvh}#viewport{position:relative;flex:1 1 auto;min-width:0}#gl{width:100%;height:100%;display:block;touch-action:none;background:radial-gradient(circle at 50% 30%,#1b2430,#0f1419 70%)}.menu-btn,.reset-btn{position:absolute;z-index:5;background:#1d2530eb;color:var(--text);border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:15px;cursor:pointer;backdrop-filter:blur(6px)}.menu-btn{top:12px;left:12px;display:none;font-size:20px;line-height:1}.gear-btn{top:12px;left:12px;font-size:18px;line-height:1}.reset-btn{top:12px;right:12px}.reset-btn:active,.menu-btn:active,.gear-btn:active{background:var(--accent)}.legend{position:absolute;left:12px;bottom:12px;z-index:5;display:flex;flex-wrap:wrap;gap:6px 12px;max-width:70%;background:#0f1419b3;padding:8px 10px;border-radius:10px;border:1px solid var(--line);font-size:12px}.legend span{display:inline-flex;align-items:center;gap:5px;color:var(--muted)}.legend i{width:12px;height:12px;border-radius:3px;display:inline-block}.panel{width:360px;max-width:86vw;flex:0 0 auto;background:var(--panel);border-left:1px solid var(--line);overflow-y:auto;padding:16px 16px 40px}.panel h1{font-size:20px;margin:0 0 2px}.panel .sub{color:var(--muted);font-size:12.5px;margin:0 0 14px}.panel section{border-top:1px solid var(--line);padding:14px 0}.panel h2{font-size:14px;margin:0 0 10px;color:var(--accent);letter-spacing:.3px}.btnrow{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}button{font:inherit;cursor:pointer;border-radius:9px;border:1px solid var(--line);background:var(--panel2);color:var(--text);padding:9px 12px;transition:.12s}button:active{transform:translateY(1px)}.seg{flex:1 1 auto;min-width:56px;text-align:center}.seg.active{background:var(--accent);border-color:var(--accent);color:#fff}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;flex:1 1 auto}button.calc{width:100%;margin-top:8px;background:#243044;border-color:#34465f}button.calc:active{background:var(--accent)}.toggles{display:flex;flex-wrap:wrap;gap:10px 16px;font-size:13px;color:var(--muted)}.toggles label{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.indices{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}.indices.hex{grid-template-columns:repeat(2,1fr)}.stp{display:flex;flex-direction:column;align-items:center;gap:5px;font-size:12px;color:var(--muted);min-width:0}.stp .strow{display:flex;width:100%;align-items:stretch;gap:4px}.stp input{flex:1 1 auto;width:100%;min-width:0;text-align:center;background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:10px 2px;font-size:17px;-moz-appearance:textfield}.stp input::-webkit-inner-spin-button,.stp input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.sbtn{flex:0 0 32px;padding:0;font-size:20px;line-height:1;font-weight:700;background:#243044;border-color:#34465f;color:var(--text)}.sbtn:active{background:var(--accent)}.stp.ro input{opacity:.6}.catrow{display:flex;gap:8px;margin-bottom:12px}.cat{flex:1 1 0}.info{display:grid;gap:4px;font-size:13px}.info div{display:flex;justify-content:space-between;gap:10px}.info span{color:var(--muted)}.info b{text-align:right}.out{font-size:13px;color:var(--text);margin-top:6px;line-height:1.45}.out i{color:var(--muted)}.result{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px;margin-top:8px}.result div{display:flex;justify-content:space-between;gap:10px;padding:2px 0}.result span{color:var(--muted)}.result small{display:block;color:var(--muted);margin-top:6px;font-size:11.5px}.foot details{font-size:12.5px;color:var(--muted)}.foot summary{cursor:pointer;color:var(--accent)}.foot p{margin:6px 0}@media (max-width: 820px){#app{flex-direction:column}.menu-btn{display:block}.panel{position:fixed;top:0;right:0;height:100dvh;transform:translate(100%);transition:transform .25s ease;z-index:20;box-shadow:-8px 0 30px #00000080}.panel.open{transform:translate(0)}.legend{max-width:60%;font-size:11px}.gear-btn{left:58px}}.glfail{color:var(--text);padding:32px;max-width:480px;margin:40px auto;text-align:center}.glfail h2{color:#ffb74d}.glfail p{color:var(--muted);line-height:1.5}.voidbox{font-size:13px;line-height:1.5}.voidbox p{margin:0 0 8px}.voidbox .dim{color:var(--muted);font-size:12.5px}.dim{color:var(--muted)}.result .formula{font-family:ui-monospace,monospace;color:var(--accent2);background:#0f1722;border-radius:6px;padding:6px 8px;margin-bottom:6px;text-align:center}.modal{position:fixed;inset:0;z-index:40;background:#05080c99;display:flex;align-items:center;justify-content:center;padding:18px;backdrop-filter:blur(3px)}.modal.hidden{display:none}.modal-card{width:100%;max-width:420px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px;max-height:88vh;overflow-y:auto}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.modal-head h2{margin:0;color:var(--text);font-size:18px}.modal-head button{background:transparent;border:none;color:var(--muted);font-size:18px}.set-sec{border-top:1px solid var(--line);padding:14px 0}.set-sec h3{margin:0 0 8px;font-size:14px;color:var(--accent)}.set-sec p{margin:0 0 8px;font-size:13px}.lang{flex:1 1 0}.contact-link{display:inline-block;color:var(--accent);font-size:15px;text-decoration:none;border:1px solid var(--line);border-radius:8px;padding:8px 12px;background:var(--panel2)}button.wide{width:100%;margin-top:8px}
