:root{--ink:#14100c;--paper:#221c16;--paper-2:#2e261c;--text:#f4ece0;--muted:#9a8c78;--line:#3c3228;--plate:#e8d4b0;--plate-dim:#e8d4b029;--herb:#7aaa5a;--herb-dim:#7aaa5a29;--chili:#d46a48;--chili-dim:#d46a4829;--linen:#c8b090;--linen-dim:#c8b09029;--danger:#e07070;--ok:#7cba86;--ok-dim:#7cba8624;--focus-ring:#e8d4b061;color:var(--text);background:var(--ink);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Iowan Old Style,Palatino,Georgia,serif;line-height:1.5}*{box-sizing:border-box}body{background:radial-gradient(780px 360px at 92% -8%, #e8d4b024, transparent 54%), radial-gradient(600px 300px at 8% 0%, #7aaa5a1a, transparent 50%), var(--ink);min-width:320px;min-height:100vh;margin:0}#root{min-height:100vh}button,input,select,textarea{font-family:inherit}button{cursor:pointer;font-family:Segoe UI,Avenir Next,system-ui,sans-serif}input,select,textarea{color:var(--text)}.app{width:min(640px,100% - 28px);margin:0 auto;padding:26px 0 72px}.top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.brand{align-items:center;gap:12px;display:flex}.mark{flex:none;width:48px;height:48px}h1{letter-spacing:-.03em;margin:0;font-size:1.85rem;font-weight:750}.tag{color:var(--stamp);margin:2px 0 0;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.98rem;font-weight:650}.tools{z-index:20;flex-wrap:wrap;gap:8px;display:flex;position:relative}.ghost,.tiny,.solid{color:var(--text);border:1px solid var(--line);background:0 0;border-radius:999px;padding:7px 14px;font-size:.86rem}.ghost:hover,.tiny:hover{background:var(--paper)}.ghost.danger,.tiny.danger{color:var(--danger)}.ghost.warn,.tiny.warn{color:var(--danger);background:#e070701f;border-color:#e0707073}.ghost:disabled,.tiny:disabled,.solid:disabled{opacity:.4;cursor:not-allowed}.solid{background:var(--stamp);border-color:var(--stamp);color:#06110c;font-weight:700}.solid:hover:not(:disabled){filter:brightness(1.05)}.solid.wide{width:100%;min-height:48px;font-size:1.02rem}.tiny{padding:4px 10px;font-size:.74rem}.tiny.on{color:var(--stamp);background:var(--stamp-dim);border-color:#2f9d7880;font-weight:700}.tiny.regex{color:var(--brass);border-color:#c9a24e73}.tiny.regex.on{background:var(--brass-dim);font-weight:700}.blurb{color:var(--muted);margin:14px 0 0;font-size:.92rem}.empty{color:var(--muted);margin:0;font-size:.92rem}.notice{background:var(--stamp-dim);color:var(--stamp);border:1px solid #2f9d7866;border-radius:12px;margin:14px 0 0;padding:10px 14px;font-size:.92rem}.notice.ok{background:var(--ok-dim);color:var(--ok);border-color:#7cba8659}.notice.warn{background:var(--brass-dim);color:var(--brass);border-color:#c9a24e66}button.notice{text-align:left;cursor:pointer;width:100%;display:block}.kicker{text-transform:uppercase;letter-spacing:.14em;color:var(--stamp);margin:0 0 10px;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.72rem}.counts{flex-wrap:wrap;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:flex}.counts li{border:1px solid var(--line);background:var(--paper);color:var(--muted);border-radius:999px;padding:6px 12px;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.82rem}.counts strong{font-variant-numeric:tabular-nums;color:var(--text);margin-right:4px}.counts .files{color:var(--stamp);border-color:#2f9d7873}.counts .changed{color:var(--brass);border-color:#c9a24e73}.composer{background:var(--paper);border:1px solid var(--line);border-radius:16px;margin-top:22px;padding:16px}.hint{color:var(--muted);margin:0;font-size:.8rem}.hint.tight{margin:-4px 0 10px}.gate-form{gap:10px;display:grid}.gate-form label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);gap:4px;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.72rem;display:grid}input[type=text],textarea{background:var(--paper-2);border:1px solid var(--line);width:100%;min-width:0;color:var(--text);resize:vertical;border-radius:12px;padding:9px 12px;font-size:1rem}textarea{min-height:110px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92rem}.mode-row{flex-wrap:wrap;gap:8px;display:flex}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:12px;display:flex}.section-head .kicker{margin:0}.card{border:1px solid var(--line);background:var(--paper);border-radius:14px;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 14px;display:flex}.card.off{opacity:.55}.card code{font-size:.86rem}.card .arrow{color:var(--muted)}.row-actions{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.preview{gap:8px;margin:0;padding:0;list-style:none;display:grid}.preview li{border:1px solid var(--line);background:var(--paper);border-radius:12px;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;padding:10px 12px;display:grid}.preview li.changed{border-color:#2f9d7866}.preview code{overflow-wrap:anywhere;font-size:.86rem}.preview .arrow{color:var(--muted);text-align:center}.preview code.new{color:var(--stamp);font-weight:700}.empty-bar{width:100%;min-height:96px;color:var(--danger);cursor:pointer;z-index:80;-webkit-user-select:none;user-select:none;touch-action:manipulation;background:#e0707029;border:1px solid #e0707073;border-radius:12px;margin:10px 0 0;font-size:1.15rem;font-weight:700;display:block;position:sticky;top:8px}button:focus,input:focus,textarea:focus{border-color:var(--stamp);box-shadow:0 0 0 3px var(--focus-ring);outline:none}.counts .open{color:#7cba86;border-color:#7cba8673}.list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.card{border:1px solid var(--line);background:var(--paper);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.card.open{border-color:#7cba8666}.name{margin:0;font-weight:700}.habit{color:var(--muted);margin:2px 0 0;font-size:.9rem}.row{gap:8px;display:flex}.section{margin-top:22px}.section-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.foot{color:var(--muted);margin-top:28px;font-size:.82rem}.tag{color:#8eb4d4}.ask{color:var(--muted);margin:8px 0 0;font-size:.84rem;font-style:italic}.card{flex-direction:column;align-items:flex-start}
