:root{--ink: #f1ecff;--ink-soft: #b9b0dc;--sun: #f6c85f;--lav: #cdbdff;--panel: #2a2058;--panel-edge: #4a3b8c}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);margin:0;min-height:100vh;background-color:#14113a;background-image:radial-gradient(1.5px 1.5px at 12% 18%,#fff9 50%,transparent 52%),radial-gradient(1px 1px at 78% 8%,#fff8 50%,transparent 52%),radial-gradient(1.5px 1.5px at 40% 62%,#ffe9a8aa 50%,transparent 52%),radial-gradient(1px 1px at 90% 70%,#fff8 50%,transparent 52%),radial-gradient(1px 1px at 25% 90%,#fff7 50%,transparent 52%),linear-gradient(180deg,#14113a,#231a54 55%,#2f2268);background-attachment:fixed;line-height:1.5}main{max-width:42rem;margin:0 auto;padding:1.2rem 1rem 4rem;position:relative}main:before{content:"☾";position:absolute;top:.4rem;right:.8rem;font-size:2rem;color:var(--sun);opacity:.85;pointer-events:none}h1{font-size:1.7rem;line-height:1.25;margin:.6rem 2.5rem .6rem 0}h2{font-size:1.1rem;margin:1.8rem 0 .4rem;color:var(--sun)}h2{padding-bottom:.35rem;border-bottom:2px dotted var(--panel-edge)}h2:before{content:none}.hero-link{display:block;margin:.4rem 0 1rem;padding:.8rem 1.1rem;border-radius:18px;text-decoration:none;font-weight:600;color:var(--ink);background:linear-gradient(120deg,#4a3b8c,#2c2262);border:1px solid var(--panel-edge)}.hero-link:hover{border-color:var(--sun)}.group{margin:.8rem 0;border:2px solid var(--panel-edge);border-radius:18px;overflow:hidden}.group>summary{padding:.7rem 1rem;font-weight:700;cursor:pointer;list-style:none;color:inherit;min-height:2.9rem}.group>summary::-webkit-details-marker{display:none}.group>summary:before{content:"▾ "}.group:not([open])>summary:before{content:"▸ "}.group .count{float:right;background:#0003;padding:0 .6rem;border-radius:999px;font-size:.85rem}.group .card{margin:.5rem}main{padding-bottom:6rem}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:8;display:flex;justify-content:center;gap:.2rem;padding:.4rem .4rem calc(.4rem + env(safe-area-inset-bottom));background:#1a1445ee;border-top:1px solid var(--panel-edge)}.bottom-nav a{flex:1 1 0;max-width:8rem;display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.35rem .2rem;min-height:3.2rem;border-radius:14px;text-decoration:none;color:var(--ink-soft);font-size:.72rem;text-align:center}.bottom-nav a span:first-child{font-size:1.3rem;line-height:1}.bottom-nav a.active{background:#3a2f78;color:var(--sun);font-weight:700}.person{display:flex;flex-direction:column;gap:.5rem}.person-main{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.person-main input[type=checkbox]{margin:0;flex:none}.person-name{font-size:1.15rem;font-weight:700;color:var(--ink);text-decoration:none}.person-name:hover{text-decoration:underline}.chip{padding:.1rem .7rem;border-radius:999px;font-size:.8rem;font-weight:600}.person-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.person-actions button{margin:0}button.small{min-height:2.4rem;padding:.3rem .9rem;font-size:.9rem;box-shadow:none}select.move{min-height:2.4rem;padding:.2rem .6rem;font-size:.9rem;border-radius:999px}.open-link{margin-left:auto;padding:.5rem .2rem;color:var(--sun);font-weight:700;text-decoration:none}.badge.new{opacity:.75;font-size:.75rem}.recent{margin:.4rem 0 0;font-size:.85rem;color:var(--ink-soft)}.recent a{color:var(--ink-soft)}.add-form{padding:.8rem}.toast{position:fixed;left:50%;bottom:8rem;transform:translate(-50%);z-index:20;margin:0;max-width:90vw;background:var(--sun);color:#2a1f55;padding:.6rem 1.1rem;border-radius:999px;font-weight:600;box-shadow:0 6px 18px #0007}h3,a{color:var(--lav)}label{display:block;margin-top:1rem;font-weight:600}input,textarea,select{font-family:inherit}input,textarea{width:100%;padding:.65rem .8rem;min-height:2.9rem;border:2px solid var(--panel-edge);border-radius:14px;font:inherit;font-size:1rem;background:#f7f4ff;color:#1d1745}input:focus,textarea:focus,select:focus,button:focus-visible,a:focus-visible{outline:3px solid var(--sun);outline-offset:2px}textarea{min-height:5rem}input[type=color]{width:4.5rem;padding:.2rem}input[type=checkbox]{width:1.5rem;min-height:1.5rem;margin:0 .6rem 0 0;vertical-align:middle;accent-color:var(--sun)}select{min-height:2.9rem;padding:.5rem .8rem;border:2px solid var(--panel-edge);border-radius:14px;background:#f7f4ff;color:#1d1745;max-width:100%;font-size:1rem}button{min-height:2.9rem;min-width:2.9rem;padding:.55rem 1.2rem;border:0;border-radius:999px;background:var(--accent, #7c5cd6);color:var(--on-accent, #fff);font:inherit;font-weight:600;cursor:pointer;margin:.6rem .4rem 0 0;box-shadow:0 3px #0005,0 6px 14px #0004;transition:transform .12s,box-shadow .12s}button:hover{transform:translateY(-1px)}button:active{transform:translateY(2px);box-shadow:0 1px #0005}button:disabled{opacity:.45;cursor:not-allowed;transform:none}button.sec{background:#3a2f78;color:var(--ink);border:2px solid var(--panel-edge);box-shadow:0 2px #0004}button.del{background:#c4476b;color:#fff}.badge{display:inline-block;padding:.1rem .6rem;border:1px dashed var(--sun);border-radius:999px;color:var(--sun);font-size:.85rem}button.tab{opacity:.6;border:2px solid transparent}button.tab[aria-pressed=true]{opacity:1;outline:3px solid #fff;outline-offset:1px}button.manage{background:var(--sun);color:#2a1f55;border:2px dashed #2a1f55;margin-left:auto}button.manage[aria-expanded=true]{background:#fff3c9}.card{background:linear-gradient(160deg,#2c2262,#231a54);border:1px solid var(--panel-edge);border-radius:18px;padding:.9rem 1.1rem;margin:.6rem 0;box-shadow:0 4px 14px #0004}.card .card{background:#1d1647;box-shadow:none}.muted{color:var(--ink-soft);font-size:.9rem;font-weight:400}.row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:flex-start}.row input{flex:1;min-width:10rem}.link-item{display:inline-block;min-height:2.75rem;line-height:2.75rem}summary{cursor:pointer;font-weight:600;color:var(--sun)}.notice{background:#3b2d7a;border:2px dashed var(--sun);border-radius:18px;padding:.8rem 1.1rem;margin:1rem 0}.notice:before{content:"☀️ "}.flash{background:color-mix(in srgb,var(--accent, #7c5cd6) 22%,#ffffff);color:#1d1745;border-radius:18px;border:3px solid var(--accent, #7c5cd6);border-top-width:10px;padding:1rem 1.2rem;margin:1rem 0;box-shadow:0 6px 18px #0006}.flash{font-family:var(--font, inherit)}.flash h2.flash-title{margin:0 0 .6rem;font-size:1.45rem;color:var(--accent, #7c5cd6)}.flash h2.flash-title:before{content:"☾ "}.flash h3{margin:1.1rem 0 .3rem;font-size:.95rem;text-transform:uppercase;letter-spacing:.04em;color:var(--accent, #7c5cd6)}.flash .line{border-bottom:1px solid #bdb3e0;min-height:2rem;padding:.35rem 0 .2rem;white-space:pre-wrap}.flash .line .lbl{font-size:.8rem;color:#5d5588;display:block}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:10}.modal{background:#261c5a;border:1px solid var(--panel-edge);color:var(--ink);border-radius:20px;padding:1.2rem;max-width:24rem;width:100%}.modal h3{margin-top:0;color:var(--sun)}.langs a{margin-right:.8rem}nav.toc a{display:block;padding:.3rem 0}section[id] h2{scroll-margin-top:1rem}.scroll-hint{position:fixed;left:50%;bottom:4.6rem;transform:translate(-50%);z-index:5;display:flex;flex-direction:column;align-items:center;margin:0;padding:0 .8rem;min-height:3.2rem;background:transparent;box-shadow:none;color:var(--sun);font-size:1.8rem;line-height:1;animation:hint-bob 1.6s ease-in-out infinite}.scroll-hint:hover,.scroll-hint:active{transform:translate(-50%);box-shadow:none}.scroll-hint .dots{display:block;height:2.2rem;border-left:4px dotted var(--sun)}.scroll-hint{font-size:2.4rem;text-shadow:0 0 8px #000a;background:linear-gradient(180deg,transparent,#14113acc 60%);border-radius:999px 999px 0 0;padding-top:.4rem}@keyframes hint-bob{0%,to{margin-bottom:0}50%{margin-bottom:-.3rem}}@media (prefers-reduced-motion: reduce){.scroll-hint{animation:none}}@media (max-width: 520px){main{padding:1rem .8rem 3rem}h1{font-size:1.45rem}.row input,.row select{flex:1 1 100%;min-width:0}.row button,form>div>button,.modal button{flex:1 1 auto}.modal button{width:100%;margin-right:0}.overlay{align-items:flex-end;padding:.5rem}}@media (prefers-reduced-motion: reduce){button{transition:none}}
