:root{--radius:10px;--radius-lg:16px;--z-sticky:20;--z-fixed:30;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5}:root,:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#05070f;--fg:#eaeefb;--muted:#9aa6c6;--line:#96aadc26;--panel:#7896d20f;--panel-strong:#0c1224bd;--panel-solid:#0b101f;--accent:#aebbdc;--accent-ink:#e2e8f6;--accent-2:#67d4ff;--glow:#fff6e059;--danger:#ff8ba0;--gold:#ffd479;--star:#ffffffeb;--star-dim:#ffffff80;--stars-opacity:.62;--star-glow-opacity:.9;--nebula-1:#26428433;--nebula-2:#1c529624;--nebula-3:#1a2c601f;--shadow:0 20px 60px #0000008c}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--fg:#131313;--muted:#5f5f5f;--line:#dcdcdc;--panel:#fff;--panel-strong:#fff;--panel-solid:#fff;--accent:#131313;--accent-ink:#131313;--accent-2:#131313;--glow:#0000001a;--danger:#b91c3c;--gold:#1a1a1a;--star:transparent;--star-dim:transparent;--stars-opacity:0;--star-glow-opacity:0;--nebula-1:transparent;--nebula-2:transparent;--nebula-3:transparent;--shadow:0 12px 30px #0000001a}*{box-sizing:border-box}html{background-color:var(--bg);background-image:radial-gradient(1200px 820px at 12% -12%, var(--nebula-1), transparent 60%), radial-gradient(1100px 760px at 112% 6%, var(--nebula-2), transparent 55%), radial-gradient(1000px 820px at 50% 118%, var(--nebula-3), transparent 60%);background-attachment:fixed;min-height:100%}body{min-height:100vh;color:var(--fg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}body:before{content:"";z-index:-1;pointer-events:none;background-image:radial-gradient(1.6px 1.6px at 24px 34px, var(--star), transparent), radial-gradient(1.4px 1.4px at 130px 92px, var(--star-dim), transparent), radial-gradient(1.2px 1.2px at 208px 158px, var(--star), transparent), radial-gradient(1.5px 1.5px at 302px 52px, var(--star-dim), transparent), radial-gradient(1.2px 1.2px at 262px 230px, var(--star), transparent), radial-gradient(1.3px 1.3px at 72px 262px, var(--star-dim), transparent);opacity:var(--stars-opacity);background-size:340px 340px;animation:9s ease-in-out infinite twinkle;position:fixed;inset:0}body:after{content:"";z-index:-1;pointer-events:none;opacity:var(--star-glow-opacity);filter:drop-shadow(0 0 4px #fffaebe6)drop-shadow(0 0 9px #e6e8ff80);background-image:radial-gradient(2.2px 2.2px at 180px 130px,#fff,#0000),radial-gradient(2.6px 2.6px at 520px 340px,#eaf1ff,#0000),radial-gradient(2px 2px at 760px 90px,#fff,#0000),radial-gradient(2.4px 2.4px at 980px 460px,#fff5df,#0000),radial-gradient(2.2px 2.2px at 340px 560px,#fff,#0000);background-size:1080px 700px;animation:6s ease-in-out 1.5s infinite twinkle;position:fixed;inset:0}@keyframes twinkle{0%,to{opacity:calc(var(--stars-opacity) * .7)}50%{opacity:var(--stars-opacity)}}h1{letter-spacing:-.01em;text-wrap:balance;margin:0;font-size:1.5rem}.muted{color:var(--muted)}.brand{letter-spacing:.01em;color:var(--accent-ink);white-space:nowrap;align-items:center;gap:.45rem;font-weight:700;display:inline-flex}button.brand{cursor:pointer;background:0 0;border:none;padding:0;font-size:1rem}button.brand:hover{box-shadow:none;color:var(--fg);border-color:#0000}.brand-icon{width:1.1em;height:1.1em;color:var(--accent-ink);filter:drop-shadow(0 0 6px var(--glow));flex:none}.error{color:var(--fg);border:1px solid var(--danger);background:color-mix(in srgb, var(--danger) 14%, transparent);border-radius:var(--radius);margin:.75rem 0;padding:.5rem .75rem;font-size:.9rem}button{font:inherit;color:var(--fg);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;padding:.5rem .9rem;transition:border-color .15s,box-shadow .15s,background .15s,transform .1s}button:hover{border-color:var(--accent);box-shadow:0 0 18px var(--glow)}button:active{transform:translateY(1px)}button:disabled{opacity:.4;cursor:default;box-shadow:none}button.link{color:var(--muted);background:0 0;border:none;border-radius:0;padding:0;text-decoration:underline}button.link:hover{box-shadow:none;color:var(--fg);background:0 0}input,textarea,select{font:inherit;color:var(--fg);background:var(--panel-strong);border:1px solid var(--line);border-radius:var(--radius);width:100%;padding:.55rem .7rem}select{cursor:pointer;width:auto;padding:.5rem 1.7rem .5rem .8rem}textarea{font-family:inherit}::placeholder{color:var(--muted)}input:focus,textarea:focus,select:focus,button:focus-visible{border-color:var(--accent);box-shadow:0 0 0 2px var(--glow);outline:none}.center{place-items:center;min-height:100vh;padding:1rem;display:grid}.card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--panel-strong);-webkit-backdrop-filter:blur(16px);width:100%;max-width:340px;box-shadow:var(--shadow), 0 0 40px var(--glow);flex-direction:column;gap:.85rem;padding:1.75rem;display:flex}.card h1{text-align:center;margin-bottom:.25rem}.topbar{z-index:var(--z-sticky);background:var(--panel-strong);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--line);position:sticky;top:0}.topbar-inner{align-items:center;gap:1rem;max-width:1180px;margin:0 auto;padding:.6rem 1rem;display:flex;position:relative}.tabs{gap:.35rem;display:flex}.nav-burger{padding:.3rem .6rem;font-size:1.1rem;line-height:1;display:none}.tab{background:0 0;border:1px solid #0000;border-radius:999px;padding:.4rem .95rem}.tab:hover{box-shadow:none;border-color:var(--line)}.tab.active{border-color:var(--accent);background:var(--panel);box-shadow:0 0 16px var(--glow)}.topbar-actions{align-items:center;gap:.85rem;margin-left:auto;display:flex}.switch{cursor:pointer;background:0 0;border:none;padding:0;line-height:0}.switch:hover{box-shadow:none}.switch:focus-visible{outline:none}.switch:focus-visible .switch-plate{border-color:var(--accent);box-shadow:0 0 0 2px var(--glow)}.switch-plate{background:var(--panel-strong);border:1px solid var(--line);border-radius:999px;width:42px;height:24px;transition:border-color .18s,box-shadow .18s;display:block;position:relative;box-shadow:inset 0 0 8px #0000004d}.switch-lever{background:var(--fg);border-radius:999px;width:16px;height:16px;transition:transform .2s cubic-bezier(.2,.9,.3,1),background .18s;position:absolute;top:3px;left:3px;transform:translate(0);box-shadow:0 1px 2px #00000073}.switch[data-on=true] .switch-lever{transform:translate(20px)}.switch[data-on=true] .switch-plate{box-shadow:inset 0 0 10px var(--glow)}.app{max-width:640px;margin:0 auto;padding:1.5rem 1rem 4rem}.add{gap:.5rem;display:flex}.add input{flex:1}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin:1rem 0 .6rem;display:flex}.toolbar .controls{gap:.5rem;display:flex}.list{flex-direction:column;gap:.5rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.row{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:.75rem;padding:.6rem .75rem;transition:border-color .15s,box-shadow .15s;display:flex}.row:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line));box-shadow:0 0 16px var(--glow)}.row.starred{background:var(--panel-strong)}.row .num{text-align:right;min-width:1.75rem;color:var(--muted);font-variant-numeric:tabular-nums}.row .content{word-break:break-word;flex:1}.row .icon{background:0 0;border:none;border-radius:8px;min-width:2rem;padding:.25rem .4rem;font-size:1.05rem;line-height:1}.row .icon:hover{box-shadow:none;background:0 0;transform:scale(1.15)}.row .icon.star.on{color:var(--gold)}.row .icon.off{opacity:.3;filter:grayscale()}.row .icon.off:hover{opacity:1;filter:none}.board{max-width:1180px;margin:0 auto;padding:1.5rem 1rem 4rem}.board .add{max-width:640px}.columns{grid-template-columns:repeat(5,minmax(0,1fr));gap:.75rem;margin-top:1.25rem;display:grid}.column{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);flex-direction:column;min-height:140px;padding:.6rem;display:flex}.column.todo{--dot:#8aa4ff}.column.blocked{--dot:#ff8ba0}.column.in_progress{--dot:#ffd479}.column.in_review{--dot:#a6b2ea}.column.done{--dot:#63e6a4}:root[data-theme=light] .column .dot{background:var(--fg);box-shadow:none}.column-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.55rem;padding:.15rem .35rem .55rem;display:flex}.column-head .label{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);align-items:center;gap:.45rem;font-size:.78rem;font-weight:600;display:flex}.column-head .dot{background:var(--dot);width:8px;height:8px;box-shadow:0 0 10px var(--dot);border-radius:999px}.column-head .count{text-align:center;font-variant-numeric:tabular-nums;min-width:1.4rem;color:var(--fg);background:var(--panel-strong);border:1px solid var(--line);border-radius:999px;padding:.05rem .45rem;font-size:.72rem}.cards{flex-direction:column;gap:.5rem;display:flex}.task-card{background:var(--panel-strong);border:1px solid var(--line);border-radius:var(--radius);cursor:grab;flex-direction:column;gap:.5rem;padding:.55rem .6rem;transition:border-color .15s,box-shadow .15s,opacity .15s;display:flex}.task-card:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line));box-shadow:0 0 16px var(--glow)}.task-card:active{cursor:grabbing}.task-card.dragging{opacity:.45;cursor:grabbing}.column.drag-over{border-color:var(--accent);box-shadow:0 0 22px var(--glow);background:color-mix(in srgb, var(--accent) 8%, var(--panel))}.task-title{text-align:left;width:100%;color:var(--fg);font:inherit;cursor:pointer;word-break:break-word;background:0 0;border:none;padding:0}.task-title:hover{box-shadow:none;color:var(--accent-ink);background:0 0}.task-controls{align-items:center;gap:.2rem;display:flex}.task-controls .spacer{flex:1}.task-controls button{min-width:1.8rem;color:var(--muted);background:0 0;border:none;border-radius:6px;padding:.15rem .4rem;font-size:1.05rem;line-height:1}.task-controls button:hover:not(:disabled){box-shadow:none;color:var(--accent-ink);background:0 0;transform:scale(1.12)}.task-controls button:disabled{opacity:.25}.task-empty{color:var(--muted);margin:0;padding:.4rem .35rem;font-size:.82rem}.side-layout{max-width:1180px;margin:0 auto;padding:1rem 1rem 4rem}.side-toolbar{margin-bottom:.85rem}.side-toggle{align-items:center;gap:.5rem;display:inline-flex}.side-toggle-icon{font-size:1rem;line-height:1}.side-body{grid-template-columns:1fr;align-items:start;gap:1.25rem;display:grid}.side-layout.open .side-body{grid-template-columns:minmax(200px,250px) 1fr}.side-nav ul{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.tool-link{text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:.15rem;width:100%;padding:.6rem .75rem;display:flex}.tool-link.active{border-color:var(--accent);background:var(--panel-strong);box-shadow:0 0 16px var(--glow)}.tool-link-label{font-weight:600}.tool-link-desc{color:var(--muted);font-size:.78rem}.side-panel{min-width:0}.palette-tool{flex-direction:column;gap:1rem;display:flex}.palette-bar{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.palette-hint{color:var(--muted);font-size:.85rem}.palette-hint kbd{border:1px solid var(--line);background:var(--panel-strong);border-radius:5px;padding:.05rem .35rem;font-family:inherit;font-size:.78rem}.swatches{gap:.6rem;min-height:60vh;display:flex}.swatch{border-radius:var(--radius-lg);cursor:pointer;border:1px solid #00000014;flex-direction:column;flex:1;justify-content:space-between;align-items:center;gap:.5rem;min-width:0;padding:.85rem .5rem 1.1rem;transition:flex .2s;display:flex}.swatch-lock{opacity:.35;background:0 0;border:none;padding:.2rem;font-size:1rem;line-height:1;transition:opacity .15s}.swatch:hover .swatch-lock,.swatch-lock[aria-pressed=true]{opacity:.85;box-shadow:none}.swatch-lock:hover{box-shadow:none;background:0 0;transform:scale(1.15)}.swatch-hex{letter-spacing:.04em;font-variant-numeric:tabular-nums;background:0 0;border:none;padding:.15rem .3rem;font-size:.95rem;font-weight:700}.swatch-hex:hover{box-shadow:none;background:0 0;transform:scale(1.06)}.saved{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--panel);overflow:hidden}.saved-head{background:0 0;border:none;border-radius:0;justify-content:space-between;align-items:center;gap:.5rem;width:100%;padding:.7rem .9rem;font-weight:600;display:flex}.saved-head:hover{box-shadow:none;background:var(--panel-strong);border-color:#0000}.saved-empty{margin:0;padding:0 .9rem .9rem;font-size:.9rem}.saved-list{flex-direction:column;gap:.35rem;margin:0;padding:.25rem .5rem .5rem;list-style:none;display:flex}.saved-row{border-radius:var(--radius);align-items:center;gap:.75rem;padding:.4rem .5rem;display:flex}.saved-row:hover{background:var(--panel-strong)}.saved-strip{border:1px solid var(--line);border-radius:6px;flex:none;width:160px;height:26px;display:flex;overflow:hidden}.saved-strip span{flex:1}.saved-hexes{min-width:0;color:var(--muted);letter-spacing:.02em;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.76rem;overflow:hidden}.saved-actions{flex:none;align-items:center;gap:.3rem;display:flex}.saved-actions button{padding:.3rem .6rem;font-size:.85rem}.saved-del{color:var(--muted);background:0 0;border:none;padding:.3rem .4rem}.saved-del:hover{box-shadow:none;color:var(--danger);background:0 0;transform:scale(1.12)}.fonts-count{margin:0;font-size:.8rem}.font-pair-label{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.fonts-sentinel{text-align:center;color:var(--muted);padding:1.25rem 0 .5rem;font-size:.82rem}.fonts-tool{flex-direction:column;gap:1rem;display:flex}.fonts-controls{z-index:1;background:linear-gradient(var(--bg), var(--bg) 78%, transparent);flex-wrap:wrap;align-items:center;gap:.6rem;padding:.75rem 0;display:flex;position:sticky;top:0}.fonts-controls input{flex:1;min-width:220px}.star-filter{white-space:nowrap;flex:none}.star-filter.active{border-color:var(--accent);box-shadow:0 0 16px var(--glow);color:var(--gold)}.font-actions{flex:none;align-items:center;gap:.4rem;display:flex}.font-star{color:var(--muted);background:0 0;border:none;padding:.2rem .4rem;font-size:1.15rem;line-height:1}.font-star:hover{box-shadow:none;background:0 0;transform:scale(1.15)}.font-star.on{color:var(--gold)}.pair-toggle{white-space:nowrap;flex:none;padding:.3rem .7rem;font-size:.82rem}.pair-toggle.active{border-color:var(--accent);box-shadow:0 0 16px var(--glow)}.pair-nav{flex:none;align-items:center;gap:.25rem;display:flex}.pair-arrow{color:var(--accent-ink);padding:.1rem .5rem;font-size:1.1rem;line-height:1}.font-list{flex-direction:column;gap:.75rem;display:flex}.font-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);padding:1.1rem 1.15rem}.font-sample{word-break:break-word;color:var(--fg);font-size:clamp(1.9rem,5.5vw,3.4rem);line-height:1.08}.font-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-top:.7rem;display:flex}.font-name{color:var(--muted);font-size:.85rem}.font-name b{color:var(--fg);font-weight:600}.font-pair{border-top:1px solid var(--line);margin-top:.9rem;padding-top:.9rem}.font-pair-label{color:var(--muted);margin-bottom:.4rem;font-size:.78rem}.font-pair-label b{color:var(--fg)}.font-pair-body{max-width:60ch;color:var(--fg);margin:0;font-size:1.02rem;line-height:1.6}.picker-tool{flex-direction:column;gap:1rem;display:flex}.dropzone{text-align:center;border:2px dashed var(--line);border-radius:var(--radius-lg);background:var(--panel);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:.35rem;min-height:320px;padding:2rem;transition:border-color .15s,box-shadow .15s,background .15s;display:flex}.dropzone:hover,.dropzone.over{border-color:var(--accent);box-shadow:0 0 22px var(--glow);background:color-mix(in srgb, var(--accent) 8%, var(--panel))}.dropzone-icon{filter:drop-shadow(0 0 10px var(--glow));font-size:2.4rem}.dropzone-title{margin:0;font-size:1.05rem;font-weight:600}.picker-bar{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.picker-stage{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--panel-strong);padding:.5rem;position:relative;overflow:hidden}.picker-canvas{border-radius:var(--radius);cursor:crosshair;max-width:100%;max-height:68vh;margin:0 auto;display:block}.loupe{box-shadow:0 0 0 1px #00000080, var(--shadow);pointer-events:none;image-rendering:pixelated;background-repeat:no-repeat;border:3px solid #fff;border-radius:999px;position:absolute;overflow:hidden;transform:translate(-50%,-50%)}.loupe-cross{border:1.5px solid #fff;border-radius:2px;width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #0009}.loupe-hex{border:1px solid #ffffffd9;border-radius:3px;width:22px;height:12px;position:absolute;bottom:6px;left:50%;transform:translate(-50%)}.picker-readout{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.ro-swatch{border:1px solid var(--line);border-radius:8px;flex:none;width:34px;height:34px}.ro-hex{letter-spacing:.03em;font-variant-numeric:tabular-nums;background:0 0;border:none;padding:0;font-size:1.05rem;font-weight:700}.ro-hex:hover{box-shadow:none;color:var(--accent-ink);background:0 0}.ro-rgb{font-variant-numeric:tabular-nums;font-size:.85rem}.picks{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--panel);padding:.75rem .9rem}.picks-head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.6rem;font-weight:600;display:flex}.picks-list{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.pick{border:1px solid var(--line);background:var(--panel-strong);border-radius:999px;align-items:center;gap:.4rem;padding:.25rem .5rem .25rem .3rem;display:flex}.pick-swatch{border:1px solid var(--line);border-radius:999px;flex:none;width:24px;height:24px;padding:0}.pick-swatch:hover{box-shadow:0 0 12px var(--glow);transform:scale(1.08)}.pick-hex{font-variant-numeric:tabular-nums;letter-spacing:.02em;min-width:5.2rem;font-size:.78rem}.pick-del{color:var(--muted);background:0 0;border:none;padding:0 .2rem;font-size:1.1rem;line-height:1}.pick-del:hover{box-shadow:none;color:var(--danger);background:0 0;transform:scale(1.15)}@media (width<=720px){.nav-burger{align-items:center;display:inline-flex}.tabs{display:none}.tabs.open{background:var(--panel-strong);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);z-index:var(--z-fixed);-webkit-backdrop-filter:blur(16px);flex-direction:column;gap:.25rem;margin-top:.4rem;padding:.4rem;display:flex;position:absolute;top:100%;left:.5rem;right:.5rem}.tabs.open .tab{border-radius:var(--radius);text-align:left}}.icon{min-width:2rem;color:var(--fg);background:0 0;border:none;border-radius:8px;padding:.25rem .4rem;font-size:1.05rem;line-height:1}a.icon{justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.icon:hover{box-shadow:none;background:0 0;transform:scale(1.12)}.icon.star.on{color:var(--gold)}.icon.on{color:var(--accent-ink)}.avatar{object-fit:cover;border:1px solid var(--line);border-radius:999px;flex:none}.avatar-fallback{background:color-mix(in srgb, var(--accent) 22%, var(--panel-strong));color:var(--fg);justify-content:center;align-items:center;font-weight:600;display:inline-flex}.primary{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, var(--panel-strong));font-weight:600}.primary:hover{box-shadow:0 0 18px var(--glow)}.danger-link{color:var(--danger);background:0 0;border:none;padding:0;text-decoration:underline}.danger-link:hover{box-shadow:none;background:0 0}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(3px);background:#0000008c;justify-content:center;align-items:flex-start;padding:6vh 1rem 1rem;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--panel-solid);border:1px solid var(--line);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow)}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:.9rem 1rem;display:flex}.modal-head h2{margin:0;font-size:1.1rem}.modal-x{color:var(--muted);background:0 0;border:none;padding:0 .3rem;font-size:1.4rem;line-height:1}.modal-x:hover{box-shadow:none;color:var(--fg);background:0 0}.modal-body{padding:1rem}.person-form{flex-direction:column;gap:.9rem;display:flex}.person-form .person-photo{align-self:center}.field{flex-direction:column;gap:.3rem;font-size:.85rem;display:flex}.field>span{color:var(--muted)}.form-actions{justify-content:flex-end;gap:.6rem;margin-top:.25rem;display:flex}.people,.birthdays,.addresses,.person-detail,.birthday-detail{flex-direction:column;gap:1rem;display:flex}.chips{flex-wrap:wrap;align-items:center;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.chip{border:1px solid var(--line);background:var(--panel-strong);border-radius:999px;align-items:center;gap:.35rem;padding:.25rem .4rem .25rem .6rem;font-size:.85rem;display:flex}.chip a{color:var(--fg);text-decoration:none}.chip a:hover{text-decoration:underline}.chip-x{color:var(--muted);background:0 0;border:none;padding:0 .15rem;font-size:1rem;line-height:1}.chip-x:hover{box-shadow:none;color:var(--danger);background:0 0}.inline-add{max-width:420px}.people-bar{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.people-search{flex:1;min-width:180px}.sort-toggle{white-space:nowrap}.sort-toggle.active{border-color:var(--accent);color:var(--gold)}.people-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.person-row{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);align-items:center;gap:.5rem;padding:.4rem .5rem;display:flex}.person-row:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line));box-shadow:0 0 16px var(--glow)}.person-open{text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:.75rem;min-width:0;padding:.15rem;display:flex}.person-open:hover{box-shadow:none;background:0 0}.person-row-text{flex-direction:column;min-width:0;display:flex}.person-row-name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.person-row-sub{white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;overflow:hidden}.person-detail-head{justify-content:space-between;align-items:center;display:flex}.person-top{align-items:center;gap:1rem;display:flex}.person-photo{background:0 0;border:none;border-radius:999px;padding:0;line-height:0;position:relative;overflow:hidden}.person-photo:hover{box-shadow:none}.person-photo-edit{text-align:center;color:#fff;opacity:0;background:#0000008c;padding:.12rem 0;font-size:.62rem;transition:opacity .15s;position:absolute;bottom:0;left:0;right:0}.person-photo:hover .person-photo-edit{opacity:1}.person-top-fields{flex-direction:column;flex:1;gap:.5rem;min-width:0;display:flex}.person-top-fields .title-input{font-size:1.25rem;font-weight:600}.person-birthday{align-items:center;gap:.5rem;font-size:.85rem;display:flex}.person-birthday input{width:auto}.person-section{border-top:1px solid var(--line);flex-direction:column;gap:.5rem;padding-top:.9rem;display:flex}.person-section h3{margin:0;font-size:.95rem}.pills{gap:.4rem;display:flex}.pill{border:1px solid var(--line);background:0 0;border-radius:999px;padding:.35rem 1rem}.pill:hover{box-shadow:none;border-color:var(--accent)}.pill.active{border-color:var(--accent);background:var(--panel);box-shadow:0 0 16px var(--glow);font-weight:600}.addresses-hint{margin:-.35rem 0 0;font-size:.8rem}.address-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.address-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);padding:.5rem .65rem}.address-card.fav{background:var(--panel-strong);border-color:color-mix(in srgb, var(--gold) 40%, var(--line))}.address-main{align-items:flex-start;gap:.5rem;display:flex}.address-text{flex-direction:column;flex:1;gap:.1rem;min-width:0;display:flex}.address-person{font-weight:600}.address-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.72rem}.address-line{word-break:break-word}.address-actions{flex:none;align-items:center;gap:.15rem;display:flex}.address-notes{border-top:1px solid var(--line);margin-top:.6rem;padding-top:.6rem}.address-add{flex-wrap:wrap}.address-add .addr-label{flex:none;width:130px}.address-add select{width:150px}.address-add input:not(.addr-label){flex:1;min-width:160px}.addr-autocomplete{flex:1;min-width:180px;position:relative}.addr-autocomplete input{width:100%}.addr-suggestions{z-index:var(--z-fixed);background:var(--panel-solid);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);max-height:260px;margin:0;padding:.25rem;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.addr-suggestion{text-align:left;width:100%;color:var(--fg);background:0 0;border:none;border-radius:6px;padding:.4rem .5rem;font-size:.85rem;display:block}.addr-suggestion:hover,.addr-suggestion.active{background:var(--panel);box-shadow:none}.addr-credit{color:var(--muted);text-align:right;padding:.35rem .5rem .15rem;font-size:.68rem}.birthday-input{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.birthday-input select{width:auto}.birthday-input .bd-day{width:5rem}.birthday-input .bd-year{width:9rem}.birthday-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.birthday-row{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}.birthday-row:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line));box-shadow:0 0 16px var(--glow)}.birthday-row .person-open{width:100%;padding:.5rem .65rem}.birthday-when{color:var(--muted);white-space:nowrap;flex:none;margin-left:auto;font-size:.82rem}.birthday-when.soon{color:var(--gold);font-weight:600}.birthday-detail-head{align-items:center;gap:1rem;display:flex}.birthday-detail-head h2{margin:0}.event-badge{background:color-mix(in srgb, var(--accent) 20%, var(--panel-strong));border:1px solid var(--line);border-radius:999px;flex:none;justify-content:center;align-items:center;line-height:1;display:inline-flex}.emoji-edit{cursor:pointer;padding:0;position:relative}.emoji-edit:hover{box-shadow:0 0 16px var(--glow);border-color:var(--accent)}.emoji-edit:after{content:"✎";background:var(--panel-solid);border:1px solid var(--line);width:20px;height:20px;color:var(--muted);border-radius:999px;justify-content:center;align-items:center;font-size:.7rem;display:flex;position:absolute;bottom:-2px;right:-2px}.event-add{flex-wrap:wrap}.emoji-grid{grid-template-columns:repeat(8,1fr);gap:.25rem;display:grid}.emoji-cell{background:0 0;border:1px solid #0000;border-radius:8px;padding:.35rem 0;font-size:1.4rem;line-height:1}.emoji-cell:hover{background:var(--panel);box-shadow:none}.emoji-cell.active{border-color:var(--accent);box-shadow:0 0 12px var(--glow)}.emoji-custom{margin:.85rem 0 .75rem}@media (width<=480px){.emoji-grid{grid-template-columns:repeat(6,1fr)}}.smart-goals{flex-direction:column;gap:1rem;display:flex}.goals-bar{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.goal-board{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.75rem;display:grid}.goal-card{text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);flex-direction:column;gap:.6rem;min-height:112px;padding:.85rem .9rem;display:flex}.goal-card:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line));box-shadow:0 0 16px var(--glow)}.goal-card.done{opacity:.68}.goal-card.done .goal-card-title{text-decoration:line-through}.goal-card-title{font-weight:600;line-height:1.3}.goal-card-meta{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-top:auto;font-size:.8rem;display:flex}.goal-badge{color:var(--fg);background:color-mix(in srgb, var(--accent) 18%, var(--panel-strong));border:1px solid var(--line);border-radius:999px;padding:.05rem .5rem;font-size:.72rem}.smart-field b{color:var(--fg)}.goal-detail-actions{gap:.5rem;display:flex}.chip-btn{border-radius:999px;padding:.35rem .8rem;font-size:.85rem}.chip-btn.done{color:#63e6a4;border-color:#63e6a4}.goal-field{grid-template-columns:auto 1fr;align-items:center;gap:.35rem .5rem;margin-top:.9rem;display:grid}.goal-letter{background:color-mix(in srgb, var(--accent) 20%, var(--panel-strong));border:1px solid var(--line);border-radius:7px;justify-content:center;align-items:center;width:26px;height:26px;font-size:.85rem;font-weight:700;display:inline-flex}.goal-label{color:var(--muted);font-size:.85rem}.goal-field textarea,.goal-field input{grid-column:1/-1}.goal-progress-h{margin:1.35rem 0 0;font-size:1rem}.goal-delete{margin-top:1.25rem}.dream{flex-direction:column;gap:.75rem;display:flex}.dream-bar{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.dream-hint{font-size:.8rem}.dream-canvas{border:1px solid var(--line);border-radius:var(--radius-lg);background-color:var(--panel);background-image:radial-gradient(circle, var(--line) 1px, transparent 1px);background-size:22px 22px;min-height:70vh;position:relative;overflow:auto}.dream-empty{position:absolute;top:1rem;left:1rem}.dream-item{background:var(--panel-strong);border:1px solid var(--line);width:200px;box-shadow:var(--shadow);border-radius:10px;position:absolute;overflow:hidden}.dream-item.image{width:auto}.dream-handle{cursor:grab;touch-action:none;background:color-mix(in srgb, var(--accent) 12%, var(--panel-strong));border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:.15rem .4rem;display:flex}.dream-handle:active{cursor:grabbing}.dream-grip{color:var(--muted);font-size:.9rem;line-height:1}.dream-del{color:var(--muted);background:0 0;border:none;padding:0 .25rem;font-size:1.1rem;line-height:1}.dream-del:hover{box-shadow:none;color:var(--danger);background:0 0}.dream-note{resize:vertical;background:color-mix(in srgb, var(--gold) 12%, var(--panel-strong));border:none;border-radius:0;width:200px;min-height:120px;padding:.5rem .6rem}.dream-note:focus{box-shadow:none;border:none;outline:none}.dream-img{max-width:280px;max-height:280px;display:block}.detail header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.detail .title-input{margin-bottom:.75rem;font-size:1.25rem;font-weight:600}.detail .add{margin-top:1rem}.detail-status{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.detail-status label{font-size:.85rem}.thoughts{flex-direction:column;gap:.75rem;margin:1rem 0 0;padding:0;list-style:none;display:flex}.thought{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:.5rem .65rem}.thought-meta{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.thought time{color:var(--muted);font-size:.78rem}.thought-body{white-space:pre-wrap;word-break:break-word;margin-top:.15rem}.thought .del{color:var(--muted);background:0 0;border:none;border-radius:6px;padding:0 .35rem;font-size:1.1rem;line-height:1}.thought .del:hover{box-shadow:none;color:var(--danger);background:0 0}@media (width<=780px){.side-layout.open .side-body{grid-template-columns:1fr}.side-nav ul{flex-direction:row;padding-bottom:.25rem;overflow-x:auto}.side-nav .tool-link{min-width:62%}.swatches{flex-wrap:wrap;min-height:auto}.swatch{flex-direction:row;flex:30%;min-height:128px;padding:.6rem .75rem}}@media (width<=860px){.columns{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;grid-template-columns:none;padding-bottom:.5rem;display:flex;overflow-x:auto}.column{scroll-snap-align:start;min-width:80%}}@media (width<=640px){.app .add{z-index:var(--z-fixed);background:var(--panel-strong);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--line);padding:.9rem 1rem calc(1.5rem + env(safe-area-inset-bottom));position:fixed;bottom:0;left:0;right:0}.app .add input,.app .add button{padding-top:.7rem;padding-bottom:.7rem}.app{padding-bottom:7rem}.row .icon{padding:.4rem .5rem;font-size:1.2rem}}@media (prefers-reduced-motion:reduce){body:before{animation:none}*{transition:none!important}}
