/* Tokens */
:root{--bg:#0a0e18;--sf:#121a2b;--sf2:#1a2438;--ink:#eef2fa;--mu:#8b96ad;--ln:#1f2a42;--ac:#2563eb;--al:#6ea8ff;--tint:rgba(47,123,255,.16);--on:#fff;--er:#ff7a6b;--sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color-scheme:dark}
:root[data-theme=light]{--bg:#f2f5fb;--sf:#fff;--sf2:#e9eef8;--ink:#0f1728;--mu:#64708a;--ln:#dde4f1;--ac:#1d5bd8;--al:#1d5bd8;--tint:rgba(31,107,255,.1);--er:#c0261a;color-scheme:light}

/* Base */
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
body{margin:0;padding-top:56px;background:var(--bg);color:var(--ink);font:16px/1.55 var(--sans)}
a{color:inherit;text-decoration:none}
h1,h2{margin:0}
h1{font-size:26px;line-height:1.2;font-weight:650;letter-spacing:-.02em}
.hi{font-size:28px;margin-bottom:8px}
.mu,small{color:var(--mu)}
.er{color:var(--er)}
main{max-width:680px;margin:0 auto;padding:28px 16px 72px}
code,.mono{font-family:var(--mono)}

/* Header + drawer */
.bar{position:fixed;top:0;left:0;right:0;height:56px;display:flex;align-items:center;gap:8px;padding:0 10px;background:var(--bg);border-bottom:1px solid var(--ln);z-index:30}
.brand{flex:1;display:flex;align-items:center;gap:8px;font-weight:650;font-size:18px;letter-spacing:-.02em}
.brand svg{color:var(--al)}
.ib{width:44px;height:44px;border:0;background:none;color:var(--ink);display:grid;place-items:center;2px;cursor:pointer;position:relative;padding:0}
.ib:hover{background:var(--ln)}
#menu span{position:absolute;left:12px;right:12px;height:2px;background:currentColor;border-radius:2px;transition:transform .25s,top .25s}
#menu span:first-child{top:16px}#menu span:last-child{top:26px}
#menu[aria-expanded=true] span:first-child{top:21px;transform:rotate(45deg)}
#menu[aria-expanded=true] span:last-child{top:21px;transform:rotate(-45deg)}
#drawer{position:fixed;top:56px;bottom:0;left:0;width:min(320px,86vw);background:var(--bg);border-right:1px solid var(--ln);overflow:auto;padding:12px 8px 32px;transform:translateX(-102%);visibility:hidden;transition:transform .25s ease,visibility .25s;z-index:25}
#scrim{position:fixed;inset:56px 0 0;background:rgba(0,0,0,.4);opacity:0;pointer-events:none;transition:opacity .25s;z-index:20}
body.open #drawer{transform:none;visibility:visible}
body.open #scrim{opacity:1;pointer-events:auto}
#drawer h3{font-size:13px;font-weight:600;color:var(--mu);margin:20px 12px 6px}
.nl{display:flex;align-items:center;gap:12px;padding:8px 12px;2px;min-height:44px}
.nl:hover{background:var(--ln)}
.nl[aria-current]{background:var(--ln);font-weight:600}
.nl svg{color:var(--mu);flex:none}

/* Home list */
#q{margin-top:20px}
section{margin-top:28px}
section h2{font-size:13px;font-weight:600;color:var(--mu);padding-bottom:8px;border-bottom:1px solid var(--ln)}
.row{display:flex;align-items:center;border-bottom:1px solid var(--ln)}
.row>a{flex:1;display:flex;align-items:center;gap:14px;padding:12px 0;min-width:0}
.row>a>span{display:flex;flex-direction:column;min-width:0}
.row small{font-size:14px}
.row svg{color:var(--al);flex:none}
.fav{color:var(--mu)}.fav.on{color:var(--al)}.fav.on svg{fill:currentColor}
.th{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:20px}
.th p{margin:4px 0 0}

/* Controls */
input,textarea,select,button{font:inherit;color:inherit}
input:not([type=range],[type=checkbox],[type=color],[type=file]),textarea,select{width:100%;background:var(--sf);border:1px solid var(--ln);2px;padding:10px 12px;min-height:44px}
input[type=file]{width:100%;padding:10px;background:var(--sf);border:1px dashed var(--mu);2px}
textarea{resize:vertical;font-family:var(--mono);font-size:15px;line-height:1.5;margin-bottom:4px}
:is(input,textarea,select,.btn,.ib,a):focus-visible{outline:2px solid var(--ac);outline-offset:2px}
input[type=range]{width:100%;accent-color:var(--al);margin-top:8px}
input[type=color]{width:100%;height:112px;border:1px solid var(--ln);2px;background:var(--sf);padding:4px;cursor:pointer}
.cs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:8px 0}.cs input[type=color]{height:52px}
input[type=checkbox]{accent-color:var(--al);width:18px;height:18px;flex:none}
.btn{min-height:44px;padding:0 16px;border:1px solid var(--ln);background:var(--sf);2px;cursor:pointer;transition:transform .12s,border-color .2s}
.btn:hover{border-color:var(--mu)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.45;pointer-events:none}
.btn.p{background:var(--ac);border-color:var(--al);color:var(--on);font-weight:600}
.btns{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;align-items:center}
.btns select{width:auto}
.fld{display:block;margin:14px 0;font-size:14px;color:var(--mu)}
.fld>input,.fld>select{margin-top:6px}
.fld b{color:var(--ink)}
.chk{display:flex;align-items:center;gap:10px;margin:10px 0;cursor:pointer}
.chk2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}

/* Output + tool widgets */
.out{background:var(--sf);border:1px solid var(--ln);2px;padding:14px;font-family:var(--mono);font-size:15px;word-break:break-all;min-height:52px;white-space:pre-wrap}
.pw{font-size:20px}
.big{font-size:44px;line-height:1.2;font-weight:650;letter-spacing:-.02em;text-align:center;padding:24px 0;font-variant-numeric:tabular-nums}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin:16px 0 0;background:var(--ln);border:1px solid var(--ln);2px;overflow:hidden}
.stats div{background:var(--sf);padding:12px 14px}
.stats dt{font-size:13px;color:var(--mu)}
.stats dd{margin:0;font-size:22px;font-weight:650}
.pv{max-width:100%;max-height:280px;2px;border:1px solid var(--ln);display:block;margin:14px 0}
canvas.pv{width:min(100%,280px);height:auto;max-height:none;image-rendering:pixelated}
.keys{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.keys .btn{min-height:56px;font-size:20px;padding:0}.keys .eq{grid-column:span 4}
.disp{background:var(--sf);border:1px solid var(--ln);2px;padding:14px 16px;margin-bottom:12px;text-align:right;min-height:96px}
.disp div{font-family:var(--mono);word-break:break-all}
#ex{font-size:26px}#rs{color:var(--mu)}
.laps{padding:0;margin:0;list-style:none;font-family:var(--mono)}
.laps li{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--ln)}
.pr{margin:0 0 22px;display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center}
.pr input{width:110px!important}.pr b{color:var(--al);font-size:18px}
.sw{height:150px;2px;border:1px solid var(--ln);margin:14px 0}
.cr{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:8px 0}
.kv{width:100%;border-collapse:collapse;margin-top:14px}
.kv td{padding:9px 0;border-bottom:1px solid var(--ln);vertical-align:top;word-break:break-all}
.kv td:first-child{color:var(--mu);width:34%;padding-right:12px}
#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:var(--ink);color:var(--bg);padding:10px 16px;2px;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:50;font-size:14px}
#toast.on{opacity:1;transform:translate(-50%,0)}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* v5 */
body{padding-top:calc(56px + env(safe-area-inset-top));padding-bottom:calc(68px + env(safe-area-inset-bottom));overscroll-behavior-y:none;-webkit-user-select:none;user-select:none}
textarea,input,.out,code{-webkit-user-select:text;user-select:text}
.bar{height:calc(56px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);border:0;gap:4px}
.brand{font:500 18px var(--sans);letter-spacing:-.02em;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand b{font-weight:800}
.mk{display:none}
#back{display:none}body.sub #back{display:grid}body.sub #menu{display:none}
#drawer{top:calc(56px + env(safe-area-inset-top));bottom:calc(68px + env(safe-area-inset-bottom));border-right:0;background:var(--sf);border-radius:0 20px 20px 0}
#scrim{inset:calc(56px + env(safe-area-inset-top)) 0 0}
.nl{border-radius:12px}.nl[aria-current]{background:var(--tint);color:var(--al);font-weight:600}.nl[aria-current] svg{color:var(--al)}
#tabs{position:fixed;left:0;right:0;bottom:0;height:calc(68px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--sf);border-top:1px solid var(--ln);display:flex;z-index:30}
#tabs a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;font-weight:600;color:var(--mu)}
#tabs a[aria-current]{color:var(--al)}
main{max-width:720px;padding:14px 16px 24px}
#view.in{animation:in .28s ease}@keyframes in{from{opacity:0;transform:translateY(8px)}}
.td{margin:0 0 16px}
[data-c=text]{--c:#34d399;--t:rgba(52,211,153,.16)}[data-c=image]{--c:#b57bff;--t:rgba(181,123,255,.16)}[data-c=everyday]{--c:#4da3ff;--t:rgba(77,163,255,.16)}[data-c=calc]{--c:#ff9f43;--t:rgba(255,159,67,.16)}[data-c=dev]{--c:#7c83ff;--t:rgba(124,131,255,.16)}[data-c=design]{--c:#ff5fa2;--t:rgba(255,95,162,.16)}[data-c=file]{--c:#e5a800;--t:rgba(255,197,61,.16)}
main input#q{height:48px;background:var(--sf);border:1px solid transparent;border-radius:14px;padding:0 16px}
.bn{display:block;position:relative;background:var(--sf);border-radius:18px;padding:18px 44px 18px 18px;margin-top:14px}
.bn b{display:block;font-size:18px;line-height:1.3;letter-spacing:-.01em}
.bn span,.bn small{display:block;color:var(--mu);font-size:13px;margin-top:4px}.bn small{margin:0 0 4px;color:var(--al);font-weight:600}
.bn svg{position:absolute;right:16px;top:50%;margin-top:-10px;color:var(--al)}
.chips{display:flex;gap:8px;overflow-x:auto;margin:14px -16px 0;padding:0 16px 4px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}
.chip{flex:none;min-height:36px;padding:0 16px;border:0;border-radius:18px;background:var(--sf);color:var(--mu);font-weight:600;cursor:pointer}
.chip[aria-pressed=true]{background:var(--ac);color:#fff}
.cats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.cc{display:flex;flex-direction:column;background:var(--sf);border-radius:16px;padding:14px;transition:transform .15s}.cc:active,.tr:active{transform:scale(.97)}
.cc i,.tr i{width:42px;height:42px;border-radius:13px;background:var(--t);color:var(--c);display:grid;place-items:center;flex:none}
.cc i{margin-bottom:10px}.cc b{font-size:15px}.cc small{color:var(--mu)}
.rows{display:grid;gap:10px;margin-top:14px}
.tr{display:flex;align-items:center;gap:12px;background:var(--sf);border-radius:16px;padding:12px 14px;transition:transform .15s}
.tr span{flex:1;min-width:0}.tr b{display:block;font-size:15px}.tr small{display:block;color:var(--mu);font-size:13px;line-height:1.3}.tr>svg{color:var(--mu);flex:none}
@media(min-width:720px){.cats{grid-template-columns:repeat(3,1fr)}}
section{margin-top:22px}
section h2{font:650 13px var(--sans);color:var(--mu);border:0;padding:0 0 8px}
input:not([type=range],[type=checkbox],[type=color],[type=file]),textarea,select{background:var(--sf2);border:1px solid transparent;border-radius:14px;padding:12px 14px;min-height:48px}
input[type=file]{border:1px dashed var(--mu);border-radius:14px;background:var(--sf)}
:is(input,textarea,select):focus{border-color:var(--al);outline:0}
.btn{min-height:48px;border:0;border-radius:14px;background:var(--sf2);font-weight:600;padding:0 18px;box-shadow:none}
.btn:hover{background:var(--ln);border:0}.btn:active{transform:scale(.97)}
.btn.p{background:var(--ac);color:#fff}.btn.p:hover{background:var(--ac);filter:brightness(1.1)}
.out,.disp,.pv,.sw{border:0;border-radius:16px}.out{background:var(--sf2)}.disp{background:var(--sf)}
.stats{border:0;border-radius:16px;background:var(--ln);gap:1px}.stats:empty{display:none}.stats div{background:var(--sf)}
.keys .btn{border-radius:16px;background:var(--sf)}
.keys [data-k="÷"],.keys [data-k="×"],.keys [data-k="−"],.keys [data-k="+"],.keys [data-k="%"],.keys [data-k="C"]{color:var(--al)}
.keys .btn.p{color:#fff}
.big{font-family:var(--mono);font-weight:700}
.fld input[type=color]{height:52px;border-radius:14px}
.grp{background:var(--sf);border-radius:16px;padding:2px 16px}
.li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--ln)}.li:last-child{border:0}.li small{color:var(--mu)}
input.tg{appearance:none;-webkit-appearance:none;width:46px;height:28px;border-radius:14px;background:var(--sf2);position:relative;flex:none;transition:background .2s;cursor:pointer}
input.tg::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .2s}
input.tg:checked{background:var(--ac)}input.tg:checked::after{transform:translateX(18px)}
.empty{color:var(--mu);text-align:center;padding:56px 16px}
#toast{bottom:calc(84px + env(safe-area-inset-bottom));border-radius:14px}
#splash{position:fixed;inset:0;background:var(--bg);display:grid;place-items:center;text-align:center;z-index:100;animation:sp .5s ease 1.1s forwards}
@keyframes sp{to{opacity:0;visibility:hidden}}
#splash .lg{display:grid;place-items:center;width:84px;height:84px;border-radius:24px;background:var(--ac);color:#fff;margin:0 auto 18px}
#splash h1{font-size:32px}#splash p{color:var(--mu);margin:6px 0 0}
/* v5.1 */
.sv{position:relative;height:200px;border-radius:16px;overflow:hidden;touch-action:none;cursor:crosshair}
.sv canvas{width:100%;height:100%;display:block}
.sv i{position:absolute;width:22px;height:22px;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.4);transform:translate(-50%,-50%);pointer-events:none}
input.hue{-webkit-appearance:none;appearance:none;width:100%;height:14px;padding:0;border:0;margin:16px 0;border-radius:7px;background:linear-gradient(90deg,#f00,#ff0,#0f0,#0ff,#00f,#f0f,#f00)}
input.hue::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;border-radius:50%;background:#fff;border:3px solid var(--ac)}
input.hue::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:#fff;border:3px solid var(--ac)}
.swt{width:44px;height:44px;border-radius:12px;flex:none;border:1px solid var(--ln)}
.cr input{flex:1}
.dots{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0 14px}
.dot{width:36px;height:36px;border-radius:50%;border:0;cursor:pointer;padding:0}
.dot[aria-pressed=true]{outline:2px solid var(--ac);outline-offset:3px}
.ed{display:flex;height:280px;background:var(--sf2);border-radius:14px;overflow:hidden}
.ed pre{margin:0;height:100%;padding:12px 8px 12px 12px;min-width:40px;text-align:right;color:var(--mu);font:15px/22px var(--mono);overflow:hidden;-webkit-user-select:none;user-select:none}
.ed textarea{flex:1;height:100%;margin:0;padding:12px 12px 12px 8px;background:none;border:0;border-radius:0;font:15px/22px var(--mono);resize:none;white-space:pre;overflow:auto}
.seg{display:flex;background:var(--sf2);border-radius:14px;padding:4px;gap:4px;margin-bottom:12px}
.seg button{flex:1;min-height:40px;border:0;background:none;border-radius:11px;font-weight:600;color:var(--mu);cursor:pointer}
.seg button[aria-pressed=true]{background:var(--ac);color:#fff}
/* v6 */
.tmc{font:700 13px var(--mono);color:var(--al);background:var(--tint);padding:7px 11px;border-radius:14px}
.dial{position:relative;width:min(72vw,260px);aspect-ratio:1;margin:8px auto 18px}
.dial svg{width:100%;height:100%;transform:rotate(-90deg)}
.dial circle{fill:none;stroke-width:6;stroke-linecap:round}
.dial .rb{stroke:var(--sf2)}.dial .rp{stroke:var(--ac);stroke-dasharray:100;transition:stroke-dashoffset .25s linear}
.dial .big{position:absolute;inset:0;display:grid;place-items:center;padding:0;font-size:34px}
.dz{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:28px 16px;border:1.5px dashed var(--mu);border-radius:16px;background:var(--sf);text-align:center;color:var(--mu);margin-bottom:12px}
.dz svg{color:var(--al)}.dz b{color:var(--ink)}.dz small{word-break:break-all}
.dz input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;border:0;min-height:0}
.dz:focus-within{outline:2px solid var(--ac);outline-offset:2px}
.cmp{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}.cmp figure{margin:0}
.cmp img{width:100%;height:160px;object-fit:contain;background:var(--sf2);border-radius:14px;display:block}
.cmp figcaption{font-size:12px;color:var(--mu);text-align:center;margin-top:4px}
#ex{font-size:38px}
#view:focus{outline:0}
@media(prefers-reduced-motion:reduce){*,::before,::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}
