:root{--bg:#f5f6fb;--card:#fff;--ink:#171a2b;--mute:#5d6380;--line:#e1e4f0;--ac:#5b4bff;--ac2:#ff6b5a;--on:#fff;--r:14px;--sh:0 8px 30px rgba(40,40,100,.08)}
:root[data-theme=dark]{--bg:#10121b;--card:#181b28;--ink:#eceefb;--mute:#9aa1c4;--line:#2a2e44;--ac:#8f84ff;--ac2:#ff8577;--on:#10121b;--sh:0 8px 30px rgba(0,0,0,.4)}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.65 "Bricolage Grotesque",system-ui,-apple-system,"Segoe UI",sans-serif;transition:background .25s,color .25s}
a{color:var(--ac)}.wrap{max-width:980px;margin:0 auto;padding:0 18px}
header.top{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 96%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.bar{display:flex;align-items:center;gap:14px;height:62px}
.logo{font-weight:800;font-size:1.15rem;text-decoration:none;color:var(--ink);margin-right:auto;letter-spacing:-.02em}.logo b{color:var(--ac)}
nav a{text-decoration:none;color:var(--mute);font-weight:600;padding:6px 10px;border-radius:8px}nav a:hover,nav a[aria-current]{color:var(--ink);background:var(--line)}
.icon{border:1px solid var(--line);background:var(--card);color:var(--ink);width:40px;height:40px;border-radius:50%;cursor:pointer;font-size:1.1rem}
.hero{padding:26px 0 6px}.hero h1{font-size:clamp(2rem,5.5vw,3.4rem);line-height:1.08;margin:0 0 12px;letter-spacing:-.035em}
.hero p{color:var(--mute);max-width:640px;margin:0;font-size:1.08rem}
.panel{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:18px;box-shadow:var(--sh);margin:14px 0 22px}
textarea{width:100%;min-height:200px;resize:vertical;border:2px solid var(--line);border-radius:var(--r);padding:14px;font:inherit;background:var(--bg);color:var(--ink)}
textarea:focus,input:focus,select:focus{outline:3px solid color-mix(in srgb,var(--ac) 45%,transparent);border-color:var(--ac)}
.stats{display:flex;flex-wrap:wrap;gap:6px 16px;color:var(--mute);font-size:.9rem;margin:10px 0 4px}.stats b{color:var(--ink)}
.row{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}h2.s{font-size:.95rem;color:var(--mute);margin:18px 0 0;font-weight:700}
button.b,.row select,.row input{font:inherit;font-weight:600;border-radius:999px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);padding:8px 16px;cursor:pointer;transition:transform .12s,border-color .12s}
button.b:hover{border-color:var(--ac);transform:translateY(-1px)}button.b:active{transform:none}
button.b.main{background:var(--ac);color:var(--on);border-color:var(--ac)}button.b.warn{color:var(--ac2);border-color:var(--ac2)}
button.b:disabled{opacity:.4;cursor:default;transform:none}
.row input{cursor:text;min-width:150px;border-radius:10px}
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,80px);background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:999px;transition:transform .25s;font-weight:600;z-index:20}.toast.show{transform:translate(-50%,0)}
article h2{font-size:1.5rem;letter-spacing:-.02em;margin:38px 0 8px}article p,article li{color:var(--mute)}
table{width:100%;border-collapse:collapse;font-size:.92rem;display:block;overflow-x:auto}td,th{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;white-space:nowrap}
details{border-bottom:1px solid var(--line);padding:10px 0}summary{cursor:pointer;font-weight:700}
.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}
.fc{border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;background:var(--bg)}.fc small{color:var(--mute);font-weight:600}
.fc .out{font-size:1.25rem;word-break:break-word;margin:4px 0 10px;min-height:1.9em}.fc .row{margin:0}.fc button.b{padding:5px 12px;font-size:.88rem}
.fav.on{color:var(--ac2);border-color:var(--ac2)}
footer{border-top:1px solid var(--line);margin-top:50px;padding:26px 0;color:var(--mute);font-size:.9rem}
@media(max-width:560px){nav a{padding:6px}.bar{gap:6px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* ===== v2 additions: sticky editor, actions bar, mode bar, recent copies, chips ===== */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.sticky{position:sticky;top:62px;z-index:5;background:var(--card);margin:-6px -18px 0;padding:10px 18px;border-radius:19px 19px 0 0;border-bottom:1px solid var(--line);box-shadow:0 12px 14px -14px rgba(20,20,60,.35)}
.actions{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.actions::-webkit-scrollbar{display:none}
.actions .b{flex:0 0 auto;white-space:nowrap;padding:6px 14px}
.modebar{display:flex;align-items:center;gap:10px;margin:8px 0;min-height:28px;font-size:.9rem;color:var(--mute)}
.modebar #modeHint{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pill{flex:0 0 auto;max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--line);color:var(--ink);padding:2px 12px;border-radius:999px;font-weight:700;font-size:.82rem}
.pill.ok{background:var(--ac);color:var(--on)}.pill.err{background:var(--ac2);color:var(--on)}
.sticky textarea{height:clamp(92px,20vh,220px);min-height:80px;max-height:45vh}
button.b.on{outline:2px solid var(--ac2);outline-offset:2px}
button.b.sm{padding:3px 10px;font-size:.82rem}
button.b.chip{padding:5px 13px;font-size:.88rem}
button.b.chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink);outline:none}
.chips{margin:14px 0 4px}
details.recent{border:1px solid var(--line);border-radius:var(--r);padding:8px 12px;margin:14px 0 4px;background:var(--bg)}
details.recent summary{font-weight:700}
details.recent .note{color:var(--mute);font-size:.82rem;margin:6px 0 0}
.rl{list-style:none;margin:8px 0 0;padding:0;max-height:190px;overflow-y:auto}
.rl li{display:flex;align-items:center;gap:8px;padding:6px 0;border-top:1px solid var(--line)}
.rl .rt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.92rem}
.empty{color:var(--mute);margin:8px 0 0;font-size:.92rem}
.fc .out{line-height:1.9;padding:.2em 0;overflow:hidden}
@media(max-width:700px){.actions{gap:5px}.actions .b{padding:6px 8px;font-size:.82rem}header.top{position:static}.sticky{top:0}.sticky textarea{height:clamp(84px,17vh,160px)}.modebar{font-size:.84rem}}
@media(max-width:480px){.actions .lb{display:none}.actions .b{font-size:.9rem}}
nav a{white-space:nowrap}
@media(max-width:700px){.bar{height:54px}.logo{font-size:1.05rem}nav a{padding:5px 7px;font-size:.9rem}.hero{padding:12px 0 2px}.hero h1{font-size:1.6rem;line-height:1.15;margin:0 0 6px}.hero p{font-size:.92rem;line-height:1.45}.panel{margin:10px 0 22px}}
img,
picture,
svg {
    display: block;
    max-width: 100%;
    height: auto;
}