:root{--ink:#100d1f;--panel:#1a1633;--panel2:#262050;--line:#342d63;--text:#f3efff;--mute:#a19bd0;--hot:#ff5a6e;--c:#8b7bff}
*{box-sizing:border-box}html{color-scheme:dark}
body{margin:0;background:var(--ink);color:var(--text);font:16px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif}
h1,h2,h3{font-family:"Avenir Next","Segoe UI Variable Display","Trebuchet MS",system-ui,sans-serif;letter-spacing:-.025em;margin:0}
h1{font-size:clamp(2.2rem,6vw,4rem);font-weight:800;line-height:1.05}h2{font-size:1.7rem;font-weight:800}h3{font-size:1.1rem;font-weight:700}
a{color:inherit}.sub{color:var(--mute);margin:.3em 0 1em}.err{color:var(--hot);margin:.4em 0;min-height:1.2em}small{color:var(--mute)}
#field{position:fixed;inset:0;display:grid;grid-template-columns:repeat(var(--cols),46px);grid-auto-rows:46px;place-items:center;overflow:hidden;pointer-events:none;z-index:-1}
#field i{width:4px;height:4px;border-radius:50%;background:var(--mute);opacity:.2}
.logo{display:inline-grid;grid-template-columns:repeat(3,7px);gap:3px;vertical-align:middle}.logo i{width:7px;height:7px;border-radius:50%;background:var(--c);display:block}
.logo i:nth-child(3n+1){background:var(--hot)}.logo i:nth-child(3n){background:#ffc44d}
.card{max-width:420px;margin:12vh auto 0;padding:2.2rem;background:var(--panel);border:1px solid var(--line);border-radius:22px}.card h1{font-size:2.4rem;margin:.6rem 0 0}
header{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:1rem;padding:.7rem 1.2rem;background:color-mix(in srgb,var(--ink) 82%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{display:flex;gap:.7rem;align-items:center;font-weight:800;font-size:1.15rem;text-decoration:none;letter-spacing:-.02em}
nav{position:relative;display:flex;margin:0 auto}nav a{position:relative;z-index:1;padding:.4em 1em;border-radius:99px;text-decoration:none;color:var(--mute);font-weight:600}nav a.on{color:var(--text)}
.pill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:99px;background:var(--panel2);border:1px solid var(--line)}
.me{display:flex;align-items:center;gap:.5rem;text-decoration:none}header button{margin:0}
.page{max-width:1000px;margin:0 auto;padding:2rem 1.2rem 5rem}.view>*{margin-bottom:1.6rem}
label{display:block;margin:.8em 0 0;color:var(--mute);font-size:.9rem}
input,select,textarea{width:100%;margin-top:.3em;padding:.65em .8em;background:var(--ink);color:var(--text);border:1px solid var(--line);border-radius:10px;font:inherit}
input[type=color]{padding:.2em;height:2.6em;cursor:pointer}input[type=file]{display:none}
:is(input,select,textarea,button,a):focus-visible{outline:2px solid var(--text);outline-offset:2px}
button,.btn{margin-top:.8em;padding:.55em 1.2em;background:var(--text);color:var(--ink);border:1px solid var(--text);border-radius:99px;font:inherit;font-weight:700;cursor:pointer;display:inline-block}
button.ghost,.btn.ghost{background:none;color:var(--text);border-color:var(--line)}button.danger{background:var(--hot);border-color:var(--hot);color:#fff}
button:active{transform:scale(.96)}details{margin-top:1.4rem;border-top:1px solid var(--line);padding-top:1rem}summary{cursor:pointer;color:var(--mute)}
.bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.bar button{margin:0}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:1rem}
.tile{display:block;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:1.1rem 1.2rem;color:inherit;text-decoration:none;transition:border-color .2s,transform .2s}
a.tile:hover{border-color:var(--c);transform:translateY(-3px)}.tile .sub{margin:.3em 0 .6em}
.proj{border-left:6px solid var(--c)}.member{text-align:center}.member .av{margin-bottom:.5rem}
.stat b{display:block;font-size:2.4rem;font-weight:800;letter-spacing:-.03em}.stat span{color:var(--mute)}
.chip{display:inline-block;padding:.1em .7em;margin-right:.4rem;border:1px solid var(--line);border-radius:99px;font-size:.8rem;color:var(--mute)}.chip.c{border-color:var(--c);color:var(--c)}
.av{--c:#888;display:inline-grid;place-items:center;width:38px;height:38px;border-radius:50%;overflow:hidden;font-weight:800;color:var(--c);background:color-mix(in srgb,var(--c) 22%,var(--panel));border:2px solid var(--c);flex:none}
.av img{width:100%;height:100%;object-fit:cover}.av.big{width:68px;height:68px;font-size:1.7rem}.av.on{box-shadow:0 0 0 4px color-mix(in srgb,var(--c) 28%,transparent)}
.un{color:var(--c);font-weight:700;text-decoration:none}
.hero h1 .ch{display:inline-block}.hero .nm{color:var(--c)}
.tabs{display:flex;gap:.4rem;flex-wrap:wrap}.tabs button{margin:0}.tabs button.on{background:var(--text);color:var(--ink)}
.row{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;padding:.8rem 0;border-bottom:1px solid var(--line)}.row>.grow{flex:1;min-width:140px}.row button{margin:0;padding:.3em .9em;font-size:.85rem}
.note{white-space:pre-wrap;overflow-wrap:anywhere}.vote{margin:0;display:grid;justify-items:center;padding:.4em .8em;border-radius:14px;min-width:3.4rem}.vote.on{background:var(--c);border-color:var(--c);color:var(--ink)}
.pond{display:flex;flex-wrap:wrap;gap:16px;padding:1.2rem;min-height:150px;background:var(--panel);border:1px dashed var(--line);border-radius:18px;touch-action:none}.pond .av{cursor:grab}
.prog{height:6px;border-radius:9px;background:var(--line);overflow:hidden;margin:.5rem 0}.prog i{display:block;height:100%;width:0;background:var(--c)}
.banner{border-left:6px solid var(--hot);background:var(--panel)}.secret{display:block;padding:.8rem;background:var(--ink);border-radius:10px;word-break:break-all;user-select:all;font-size:1.05rem}
.back{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:1rem;background:rgba(8,6,20,.7)}
.modal{width:min(460px,100%);max-height:90vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:1.5rem}
.actions{display:flex;gap:.6rem;justify-content:flex-end;margin-top:.6rem}.actions button{margin:0}
#toasts{position:fixed;right:1rem;bottom:1rem;z-index:30;display:grid;gap:.5rem}.toast{padding:.7em 1.1em;background:var(--text);color:var(--ink);border-radius:14px;font-weight:600}.toast.bad{background:var(--hot);color:#fff}
@media(max-width:700px){nav{order:3;width:100%;overflow-x:auto}.me span.un{display:none}}
/* v3 */
.view:empty::after{content:'Loading…';color:var(--mute)}
button.icon{position:relative;padding:.45em .7em}.badge{position:absolute;top:-6px;right:-6px;min-width:19px;height:19px;padding:0 5px;border-radius:99px;background:var(--hot);color:#fff;font-size:.72rem;display:grid;place-items:center}.badge[hidden]{display:none}
button.link{margin:0 0 0 .4rem;padding:0;background:none;border:0;color:var(--mute);text-decoration:underline;font-weight:500;font-size:.8rem}
.tabs a.btn{margin:0}.tabs .on,.tabs a.on{background:var(--text);color:var(--ink)}
.res{display:flex;gap:.6rem;align-items:center;padding:.6rem .7rem;border-radius:12px;text-decoration:none;flex-wrap:wrap}.res.on,.res:hover{background:var(--panel2)}.res small{margin-left:auto}.results{margin-top:.6rem;max-height:50vh;overflow:auto}
.mention{color:var(--hot);font-weight:600}.cm{display:flex;gap:.7rem;padding:.7rem 0;border-bottom:1px solid var(--line)}.cm p{margin:.2em 0}.comments+textarea{margin-top:.8rem}
.md{overflow-wrap:anywhere}.md h2,.md h3,.md h4{margin:1.4em 0 .5em}.md p,.md ul,.md ol,.md pre,.md blockquote{margin:.7em 0}.md img{max-width:100%;border-radius:12px;border:1px solid var(--line)}
.md a{color:#9fd0ff}.md a.missing{color:var(--hot)}.md code{background:var(--ink);padding:.1em .4em;border-radius:6px;font-size:.9em}.md pre{background:var(--ink);padding:1rem;border-radius:12px;overflow-x:auto}.md pre code{padding:0;background:none}
.md blockquote{border-left:4px solid var(--line);padding-left:1rem;color:var(--mute)}.md hr{border:0;border-top:1px solid var(--line)}.tablewrap{overflow-x:auto}.md table{border-collapse:collapse}.md th,.md td{border:1px solid var(--line);padding:.4em .8em;text-align:left}.md th{background:var(--panel2)}
.wikilayout{display:grid;grid-template-columns:230px 1fr;gap:1.5rem;align-items:start}.wside{position:sticky;top:76px;display:grid;gap:.2rem}.wside input{margin:0 0 .5rem}.wl{display:block;padding:.35em .7em;border-radius:10px;text-decoration:none;color:var(--mute)}.wl:hover,.wl.on{background:var(--panel2);color:var(--text)}
.toc{display:grid;gap:.2rem;padding:.8rem 1rem;background:var(--panel);border:1px solid var(--line);border-radius:14px;margin:1rem 0}.toc a{color:var(--mute);text-decoration:none;font-size:.9rem}.toc a:hover{color:var(--text)}
.editor{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.editor textarea{min-height:420px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9rem}.prev{padding:.8rem 1rem;border:1px solid var(--line);border-radius:12px;min-height:420px;overflow:auto;max-height:70vh}
.toolbar{display:flex;gap:.3rem;flex-wrap:wrap;margin:.5rem 0}.toolbar button{margin:0;padding:.25em .8em;font-size:.85rem}
.ver{background:var(--panel);border:1px solid var(--line);border-radius:18px;margin-bottom:.8rem;overflow:hidden}.ver.drop{border-color:var(--c);box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 30%,transparent)}.ver>summary{padding:1rem 1.2rem;cursor:pointer;display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;list-style:none;color:var(--text)}
.ver>div{padding:0 1.2rem 1.2rem}.ver.latest{border-color:var(--c)}.tags{margin-top:.4rem}.tags .chip{font-size:.72rem}
@media(max-width:800px){.wikilayout,.editor{grid-template-columns:1fr}.wside{position:static}}
/* v4 */
.secret{white-space:pre-wrap}button svg{vertical-align:-3px}button.icon{padding:.5em .75em}.vote svg{display:block}
