@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-vietnamese-500-normal-BmEvtly_.woff2)format("woff2"),url(/assets/space-grotesk-vietnamese-500-normal-BTqKIpxg.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-ext-500-normal-DUe3BAxM.woff2)format("woff2"),url(/assets/space-grotesk-latin-ext-500-normal-3dgZTiw9.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2)format("woff2"),url(/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-vietnamese-600-normal-DUi7WF5p.woff2)format("woff2"),url(/assets/space-grotesk-vietnamese-600-normal-D6zpsUhD.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-ext-600-normal-DxxdqCpr.woff2)format("woff2"),url(/assets/space-grotesk-latin-ext-600-normal-VcznFIpX.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2)format("woff2"),url(/assets/space-grotesk-latin-600-normal-BflQw4A9.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-vietnamese-400-normal-BF4g3tCF.woff2)format("woff2"),url(/assets/archivo-vietnamese-400-normal-FGOLYM1a.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-latin-ext-400-normal-B5tPZzqW.woff2)format("woff2"),url(/assets/archivo-latin-ext-400-normal-DrmqtLj6.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-latin-400-normal-C81ewxNO.woff2)format("woff2"),url(/assets/archivo-latin-400-normal-Bl602Mgc.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-vietnamese-500-normal-k0drYPZA.woff2)format("woff2"),url(/assets/archivo-vietnamese-500-normal-7W3lD2kQ.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-latin-ext-500-normal-RFhg4CpD.woff2)format("woff2"),url(/assets/archivo-latin-ext-500-normal-D7mXw3Kz.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-latin-500-normal-CGugC8dq.woff2)format("woff2"),url(/assets/archivo-latin-500-normal-pkzA7jw9.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-vietnamese-600-normal-anCjMumA.woff2)format("woff2"),url(/assets/archivo-vietnamese-600-normal-C8xBVdfP.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-latin-ext-600-normal-Dm61iqcg.woff2)format("woff2"),url(/assets/archivo-latin-ext-600-normal-D7uErJuz.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-latin-600-normal-3BBy0ZsW.woff2)format("woff2"),url(/assets/archivo-latin-600-normal-DwYieO8P.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,:before,:after{box-sizing:border-box}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--font-display:"Space Grotesk", system-ui, sans-serif;--font-body:"Archivo", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--bg:#13120f;--glow-warm:#c68a3d1f;--glow-cool:#d6785a0d;--ink:#f1ede6;--ink-soft:#a39d93;--ink-faint:#8a857d;--surface:#1c1a17;--surface-2:#171613;--line:#2f2c27;--line-soft:#25231f;--ring:#6e6a64;--amber:#c68a3d;--amber-hover:#d39a4f;--on-amber:#13120f;--teal:#4fa6c4;--success:#5fbf86;--on-success:#13120f;--coral:#ff7a59;--gold:#f2c14e;--gold-deep:#c9962c;--shadow-card:0 1px 2px #0000004d, 0 8px 24px -10px #00000080;--shadow-card-hover:0 1px 2px #00000059, 0 14px 32px -12px #0009;--radius:18px;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-pop:cubic-bezier(.34, 1.56, .64, 1);font-family:var(--font-body);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}body{background:radial-gradient(70vmax 60vmax at 95% -10%, var(--glow-warm), transparent 65%), radial-gradient(60vmax 50vmax at -10% 110%, var(--glow-cool), transparent 65%), var(--bg);min-height:100vh;margin:0}button,input{font:inherit;color:inherit}html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}button{touch-action:manipulation}input,select,textarea{font-size:max(16px,1rem)}.eyebrow{font-family:var(--font-mono);letter-spacing:.02em;color:var(--teal);margin:0;font-size:.8rem;font-weight:500}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.view-panel,.view-title,.modal[open],.empty-state{animation:.2s ease-out both fade-in!important}.habit,.habit:hover,.habit:active,.button-primary:hover:not(:disabled),.emoji:hover,.idea-chip:active{transform:none!important}.spinner{border-top-color:var(--ring)!important;animation:none!important}}@keyframes fade-in{0%{opacity:0}}.spinner{border:2px solid;border-top-color:#0000;border-radius:50%;flex:none;width:1em;height:1em;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.button-primary{background:var(--amber);color:var(--on-amber);font-family:var(--font-display);letter-spacing:-.005em;cursor:pointer;border:none;border-radius:14px;justify-content:center;align-items:center;gap:10px;font-weight:600;transition:transform .15s,box-shadow .15s,background-color .15s;display:flex}.button-primary:hover:not(:disabled){background:var(--amber-hover)}@media (hover:hover){.button-primary:hover:not(:disabled){box-shadow:0 14px 28px -12px var(--amber);transform:translateY(-2px)}}.button-primary:active:not(:disabled){transform:translateY(0)scale(.98)}.button-primary:focus-visible,.button-ghost:focus-visible,.icon-button:focus-visible{outline:2px solid var(--amber);outline-offset:3px}.icon-button{border:1px solid var(--line-soft);background:var(--surface-2);width:44px;height:44px;color:var(--ink-soft);cursor:pointer;border-radius:50%;flex:none;place-items:center;padding:0;font-size:.85rem;transition:color .15s,border-color .15s;display:grid}.icon-button:hover{color:var(--ink);border-color:var(--line)}.button-primary,.button-ghost{min-height:44px;padding:12px 22px;font-size:1rem}.button-primary:disabled{cursor:not-allowed;opacity:.45}.button-primary[aria-busy=true]{cursor:progress;opacity:.85}.button-ghost{border:1px solid var(--line);color:var(--ink-soft);font-family:var(--font-display);cursor:pointer;background:0 0;border-radius:14px;justify-content:center;align-items:center;gap:8px;font-weight:500;transition:color .15s,border-color .15s;display:inline-flex}.button-ghost:disabled{cursor:progress;opacity:.7}.button-ghost:hover{color:var(--ink);border-color:var(--ink-faint)}.name-field{border:1px solid var(--ring);background:var(--surface-2);border-radius:14px;align-items:center;gap:12px;padding:6px 6px 6px 12px;transition:border-color .15s,box-shadow .15s;display:flex}.name-field:focus-within{border-color:var(--amber);box-shadow:0 0 0 4px color-mix(in srgb, var(--amber) 15%, transparent)}.name-field input{background:0 0;border:none;flex:1;min-width:0;min-height:44px;padding:10px 4px;font-size:1.05rem}.name-field input:focus{outline:none}.name-field input::placeholder{color:var(--ink-faint)}.modal{border:1px solid var(--line);background:var(--surface);width:min(440px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--ink);border-radius:22px;padding:0;box-shadow:0 30px 80px -20px #000000b3}.modal-wide{width:min(680px,100vw - 32px)}.modal[open]{animation:modal-in .26s var(--ease-out)}.modal::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#05070999;animation:.2s ease-out backdrop-in}.modal-body{flex-direction:column;gap:20px;padding:22px 24px 24px;display:flex}@media (width<=420px){.modal-body{padding:18px 18px 20px}}.modal-header{justify-content:space-between;align-items:center;display:flex}.modal-header h2{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:1.4rem;font-weight:600}.modal-actions{justify-content:flex-end;align-items:center;gap:10px;display:flex}@keyframes modal-in{0%{opacity:0;transform:translateY(12px)scale(.97)}}@keyframes backdrop-in{0%{opacity:0}}@media (width<=420px){.modal-actions{justify-content:flex-end}}.view-tabs{border:1px solid var(--line);background:var(--surface-2);border-radius:999px;flex:none;margin-bottom:4px;padding:4px;display:flex;position:relative}.view-tabs-pill{width:calc((100% - 8px) / var(--count,2));background:var(--surface);box-shadow:0 1px 2px #0000004d, inset 0 0 0 1px var(--ring);transform:translateX(calc(var(--active) * 100%));transition:transform .35s var(--ease-out);border-radius:999px;position:absolute;top:4px;bottom:4px;left:4px}.view-tab{width:84px;min-height:40px;color:var(--ink-faint);font-family:var(--font-display);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:999px;padding:8px 0;font-size:.95rem;font-weight:500;transition:color .25s;position:relative}.view-tab:hover{color:var(--ink-soft)}.view-tab.active{color:var(--ink)}.view-tab:focus-visible{outline:2px solid var(--amber);outline-offset:2px}@media (hover:none){.view-tab:hover{color:var(--ink-faint)}}.header-actions{align-items:center;gap:8px;display:flex}.info-button svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;width:20px;height:20px}.zone-build{--zone:var(--amber)}.zone-runtime{--zone:var(--teal)}.zone-data{--zone:var(--success)}.arch-tabs{width:100%;margin:0}.arch-tabs .view-tab{flex:1;width:auto;min-height:44px;padding:8px 6px;font-size:.9rem}.arch-panel{flex-direction:column;gap:14px;display:flex}.arch-intro{color:var(--ink-soft);margin:0;line-height:1.55}.arch-footnote{border-top:1px solid var(--line-soft);color:var(--ink-soft);margin:0;padding-top:12px;font-size:.85rem;line-height:1.5}.arch-footnote code,.arch-format code{font-family:var(--font-mono);color:var(--ink);font-size:.8em}.flow-step,.layer,.stores,.data-step,.data-divider{animation:arch-in .42s var(--ease-out) both;animation-delay:calc(var(--i) * 45ms)}@keyframes arch-in{0%{opacity:0;transform:translateY(6px)}}.zone-legend{font-family:var(--font-mono);color:var(--ink-soft);flex-wrap:wrap;gap:6px 16px;margin:0;padding:0;font-size:.75rem;list-style:none;display:flex}.zone-legend li{align-items:center;gap:6px;display:flex}.zone-swatch{background:var(--zone);border-radius:3px;width:10px;height:10px}.flow{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.flow-node{border:1px solid var(--line);border-left:4px solid var(--zone);background:var(--surface-2);border-radius:14px;align-items:center;gap:12px;padding:12px 14px;display:flex}.flow-icon{background:color-mix(in srgb, var(--zone) 14%, var(--surface));border-radius:12px;flex:none;place-items:center;width:40px;height:40px;font-size:1.3rem;display:grid}.flow-text{flex-direction:column;gap:3px;min-width:0;display:flex}.flow-title{font-family:var(--font-display);flex-wrap:wrap;align-items:center;gap:4px 8px;font-weight:600;display:flex}.flow-tag{border:1px solid var(--line);font-family:var(--font-mono);color:var(--ink-soft);border-radius:999px;padding:1px 8px;font-size:.7rem;font-weight:400}.flow-detail{font-family:var(--font-mono);color:var(--ink-soft);overflow-wrap:anywhere;font-size:.75rem;line-height:1.45}.flow-link{border-left:2px dashed var(--ring);align-items:center;gap:10px;margin-left:33px;padding:6px 0 6px 14px;display:flex}.flow-arrow{background:var(--surface);color:var(--ink-soft);margin-left:-22px;padding:0 2px;font-size:1rem;line-height:1}.flow-link-label{font-family:var(--font-mono);color:var(--ink-soft);font-size:.75rem;line-height:1.4}.layers{flex-direction:column;gap:18px;margin:0;padding:0;list-style:none;display:flex}.layer{border:1px solid var(--line);background:var(--surface-2);border-radius:16px;padding:12px;position:relative}.layer+.layer:before{content:"↓";color:var(--ink-soft);font-size:.9rem;line-height:1;position:absolute;top:-17px;left:50%;translate:-50%}.layer-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;margin-bottom:10px;display:flex}.layer-title{font-family:var(--font-display);font-weight:600}.layer-path{font-family:var(--font-mono);color:var(--teal);font-size:.75rem}.layer-blocks{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.block{border:1px solid var(--line-soft);background:var(--surface);border-radius:10px;flex-direction:column;gap:2px;padding:8px 10px;display:flex}.block-name{font-family:var(--font-mono);color:var(--ink);font-size:.82rem}.block-role{color:var(--ink-soft);font-size:.8rem;line-height:1.4}.stores{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;display:grid}.store{border:1px solid var(--line);border-left:4px solid var(--zone);font-family:var(--font-display);border-radius:12px;flex-wrap:wrap;align-items:center;gap:4px 8px;padding:10px 12px;font-weight:600;display:flex}.store-note{width:100%;font-family:var(--font-mono);color:var(--ink-soft);font-size:.72rem;font-weight:400}.data-steps{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.data-step{border:1px solid var(--line);border-left:4px solid var(--zone);background:var(--surface-2);border-radius:12px;grid-template-columns:28px 64px 1fr;align-items:center;gap:10px;padding:10px 12px;display:grid}.data-num{background:color-mix(in srgb, var(--zone) 18%, var(--surface));width:26px;height:26px;font-family:var(--font-mono);color:var(--ink);border-radius:50%;place-items:center;font-size:.78rem;display:grid}.data-who{font-family:var(--font-mono);color:var(--ink-soft);font-size:.75rem}.data-text{line-height:1.45}.data-divider{border:1px dashed var(--ring);font-family:var(--font-mono);color:var(--ink-soft);text-align:center;border-radius:12px;margin:6px 0;padding:8px 12px;font-size:.75rem;line-height:1.5}.arch-format{background:var(--surface-2);border-radius:12px;flex-direction:column;gap:6px;margin:0;padding:10px 12px;display:flex}.arch-format-label{font-family:var(--font-mono);color:var(--ink-soft);font-size:.72rem}.arch-format code{overflow-wrap:anywhere}@media (width<=420px){.data-step{grid-template-columns:28px 1fr}.data-text{grid-column:2}.arch-tabs .view-tab{font-size:.82rem}}.sync-chip{border:1px solid var(--line);background:var(--surface);min-height:36px;color:var(--ink-soft);font-family:var(--font-mono);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:6px 14px;font-size:.75rem;transition:color .15s,border-color .15s;display:inline-flex;position:relative}.sync-chip:after{content:"";width:max(100%,44px);height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.sync-chip:hover{color:var(--ink);border-color:var(--ink-faint)}.sync-chip:focus-visible{outline:2px solid var(--amber);outline-offset:3px}.sync-dot{background:var(--ink-faint);border-radius:50%;width:7px;height:7px}.status-synced .sync-dot{background:var(--success)}.status-syncing .sync-dot{background:var(--teal);animation:.9s ease-in-out infinite alternate sync-blink}.status-offline .sync-dot{background:var(--amber)}.status-error .sync-dot{background:var(--coral)}.status-error{color:var(--coral)}.sync-text,.sync-state,.sync-error{color:var(--ink-soft);margin:0;line-height:1.55}.sync-text strong{color:var(--ink);font-weight:500}.sync-state,.sync-error{font-family:var(--font-mono);font-size:.78rem}.sync-state:empty{display:none}.sync-error{color:var(--coral)}.sync-form{flex-direction:column;gap:16px;display:flex}.sync-form .name-field{padding-left:6px}@keyframes sync-blink{0%{opacity:.35}}.progress{align-items:center;gap:16px;margin-top:18px;display:flex}.progress-text{font-family:var(--font-mono);color:var(--ink-soft);flex:none;margin:18px 0 0;font-size:.85rem}.progress .progress-text{margin:0}.progress-bar{background:var(--line);border-radius:3px;flex:1;height:3px;overflow:hidden}.progress-bar span{border-radius:inherit;background:var(--amber);height:100%;transition:width .6s var(--ease-out);display:block}.confetti{z-index:10;pointer-events:none;width:0;height:0;position:fixed}.confetti span{opacity:0;border-radius:2px;width:7px;height:11px;margin:-5px -3px;animation:1.3s both confetti-fly;position:absolute}.confetti span.round{border-radius:50%;width:7px;height:7px}@keyframes confetti-fly{0%{opacity:1;animation-timing-function:cubic-bezier(.2,.8,.4,1);transform:translate(0)rotate(0)}40%{opacity:1;transform:translate(calc(var(--dx) * .7), var(--peak)) rotate(calc(var(--spin) * .5));animation-timing-function:cubic-bezier(.5,0,.9,.6)}to{opacity:0;transform:translate(var(--dx), var(--fall)) rotate(var(--spin))}}@media (prefers-reduced-motion:reduce){.confetti{display:none}}.habit-list{flex-direction:column;gap:14px;margin:0 0 32px;padding:0;list-style:none;display:flex}.habit{--accent:#b07433}.habit:nth-child(6n+2){--accent:#3b93b5}.habit:nth-child(6n+3){--accent:#6b9563}.habit:nth-child(6n+4){--accent:#c06a4e}.habit:nth-child(6n+5){--accent:#6378b3}.habit:nth-child(6n+6){--accent:#96679a}.habit{--accent-soft:color-mix(in srgb, var(--accent) 14%, var(--surface));border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-card);animation:habit-in .6s var(--ease-out) var(--appear-delay,0s) both;transition:background-color .4s ease, border-color .4s ease, box-shadow .25s ease, transform .25s var(--ease-out);position:relative}@media (hover:hover){.habit:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-2px)}}.habit.done{background:color-mix(in srgb, var(--success) 8%, var(--surface));border-color:color-mix(in srgb, var(--success) 32%, var(--surface))}.habit:after{content:"";border-radius:inherit;pointer-events:none;opacity:0;position:absolute;inset:-1px}.habit:active{transition-duration:90ms;transform:scale(.975)}.habit.celebrate{animation:habit-in .6s var(--ease-out) var(--appear-delay,0s) both, card-bounce .42s var(--ease-pop)}.habit.celebrate:after{animation:.7s ease-out card-pulse}.habit-toggle{-webkit-user-select:none;user-select:none;border-radius:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;align-items:center;gap:18px;width:100%;padding:16px 20px 16px 16px;display:flex}.habit-toggle:focus-visible{outline:2px solid var(--amber);outline-offset:3px}.habit-toggle:active .check{transform:scale(.9)}.habit-emoji{background:var(--accent-soft);border-radius:16px;flex:none;place-items:center;width:64px;height:64px;font-size:2.2rem;line-height:1;display:grid}.habit-text{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.habit-name{font-family:var(--font-display);letter-spacing:-.01em;overflow-wrap:anywhere;font-size:1.15rem;font-weight:500}.habit-meta{font-family:var(--font-mono);flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:.75rem;line-height:1.2;display:flex}.streak{border:1px solid var(--line);background:var(--surface-2);color:var(--ink-soft);white-space:nowrap;border-radius:999px;align-items:center;padding:3px 9px;display:inline-flex}.streak.none{color:var(--ink-faint);background:0 0;border:none;padding:3px 0}.streak.tier-7{border-color:color-mix(in srgb, var(--amber) 45%, transparent);background:color-mix(in srgb, var(--amber) 14%, var(--surface));color:var(--amber-hover)}.streak.tier-30{border-color:color-mix(in srgb, var(--coral) 50%, transparent);background:color-mix(in srgb, var(--coral) 16%, var(--surface));color:var(--coral);box-shadow:0 0 14px -4px color-mix(in srgb, var(--coral) 60%, transparent)}.streak.tier-100,.milestone-badge.tier-100{background:linear-gradient(110deg, var(--gold-deep) 20%, var(--gold) 45%, #fff3c4 50%, var(--gold) 55%, var(--gold-deep) 80%);color:#2a1d08;box-shadow:0 0 18px -4px color-mix(in srgb, var(--gold) 70%, transparent);background-size:250% 100%;border-color:#0000;font-weight:500;animation:3.5s linear infinite shimmer}.habit.celebrate .streak{animation:streak-pop .5s var(--ease-pop)}.habit.celebrate .streak.tier-100{animation:streak-pop .5s var(--ease-pop), shimmer 3.5s linear infinite}.milestone-badge{background:var(--amber);color:var(--on-amber);white-space:nowrap;animation:badge-in .6s var(--ease-pop) both;border-radius:999px;align-items:center;padding:3px 9px;font-weight:500;display:inline-flex}.milestone-badge.tier-30{background:var(--coral)}.milestone-badge.tier-100{animation:badge-in .6s var(--ease-pop) both, shimmer 3.5s linear infinite}.habit-status{color:var(--success);white-space:nowrap;animation:status-in .35s var(--ease-out) both}.check{border:2px solid var(--ring);width:44px;height:44px;color:var(--on-success);border-radius:50%;flex:none;place-items:center;transition:border-color .25s,box-shadow .3s,transform .15s;display:grid;position:relative}.habit-toggle:hover .check{border-color:var(--success)}.check:before{content:"";background:var(--success);transition:transform .35s var(--ease-pop);border-radius:50%;position:absolute;inset:-2px;transform:scale(0)}.habit.done .check{border-color:var(--success);box-shadow:0 6px 16px -6px var(--success)}.habit.done .check:before{transform:scale(1)}.check-icon{width:22px;height:22px;position:relative}.check-icon path{fill:none;stroke:currentColor;stroke-width:2.75px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:24;stroke-dashoffset:24px;transition:stroke-dashoffset .2s ease-in}.habit.done .check-icon path{stroke-dashoffset:0;transition:stroke-dashoffset .32s ease-out .14s}.habit.celebrate .check{animation:check-pop .5s var(--ease-pop)}.habit.celebrate .habit-emoji{animation:emoji-bounce .6s var(--ease-pop)}.burst{pointer-events:none;position:absolute;inset:0}.burst span{background:var(--success);opacity:0;border-radius:50%;width:7px;height:7px;margin:-3.5px;position:absolute;top:50%;left:50%}.burst span:nth-child(2n){background:var(--amber);width:5px;height:5px;margin:-2.5px}.habit.celebrate .burst span{animation:.6s ease-out burst}@keyframes habit-in{0%{opacity:0;transform:translateY(14px)scale(.98)}}@keyframes card-bounce{0%{transform:scale(.97)}40%{transform:scale(1.018)}70%{transform:scale(.996)}to{transform:scale(1)}}@keyframes card-pulse{0%{opacity:1;box-shadow:0 0 0 0 color-mix(in srgb, var(--success) 45%, transparent)}to{opacity:0;box-shadow:0 0 0 12px color-mix(in srgb, var(--success) 0%, transparent)}}@keyframes check-pop{0%{transform:scale(.8)}50%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes emoji-bounce{0%{transform:scale(1)rotate(0)}40%{transform:scale(1.18)rotate(-8deg)}70%{transform:scale(.96)rotate(3deg)}to{transform:scale(1)rotate(0)}}@keyframes streak-pop{0%{transform:scale(1)}45%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes badge-in{0%{opacity:0;transform:scale(.4)rotate(-8deg)}to{opacity:1;transform:none}}@keyframes status-in{0%{opacity:0;transform:translate(-4px)}}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-150% 0}}@keyframes burst{0%{opacity:1;transform:rotate(var(--angle)) translateY(-10px) scale(1)}65%{opacity:1}to{opacity:0;transform:rotate(var(--angle)) translateY(-44px) scale(.4)}}.add-button{width:100%;box-shadow:0 10px 24px -12px var(--amber);padding:16px 24px;font-size:1.1rem}.add-button:before{content:"+";font-size:1.4rem;font-weight:500;line-height:1}.emoji-grid{grid-template-columns:repeat(6,1fr);gap:8px;display:grid}@media (width<=420px){.emoji-grid{gap:6px}}@media (width<=360px){.emoji-grid{grid-template-columns:repeat(5,1fr)}}.emoji{aspect-ratio:1;border:1px solid var(--line-soft);background:var(--surface-2);cursor:pointer;transition:transform .15s var(--ease-pop), background-color .15s ease, border-color .15s ease, box-shadow .15s ease;border-radius:14px;place-items:center;padding:0;font-size:1.6rem;line-height:1;display:grid}@media (hover:hover){.emoji:hover{transform:scale(1.08)}}.emoji.selected{border-color:var(--amber);background:color-mix(in srgb, var(--amber) 14%, var(--surface));box-shadow:0 0 0 3px color-mix(in srgb, var(--amber) 20%, transparent)}.emoji:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.name-preview{flex:none;font-size:1.6rem;line-height:1}.hint{white-space:nowrap;font-family:var(--font-mono);color:var(--ink-faint);flex:1;margin:0;font-size:.72rem}@media (width<=420px){.hint{display:none}}.empty-state{border:1px solid var(--line-soft);background:radial-gradient(120% 80% at 50% 0%, color-mix(in srgb, var(--amber) 10%, transparent), transparent 70%), var(--surface);box-shadow:var(--shadow-card);text-align:center;animation:habit-in .6s var(--ease-out) both;border-radius:24px;flex-direction:column;align-items:center;padding:36px 24px 28px;display:flex}.empty-art{margin-bottom:22px;display:flex}.empty-art span{border:1px solid var(--line);background:var(--surface-2);width:64px;height:64px;box-shadow:var(--shadow-card);border-radius:18px;place-items:center;margin:0 -6px;font-size:2rem;animation:4s ease-in-out infinite empty-float;display:grid}.empty-art span:first-child{animation-delay:-.6s;transform:rotate(-8deg)}.empty-art span:nth-child(2){z-index:1;animation-delay:-1.8s;position:relative;transform:translateY(-8px)}.empty-art span:nth-child(3){animation-delay:-3s;transform:rotate(8deg)}.empty-state h2{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:1.45rem;font-weight:600}.empty-text{max-width:34ch;color:var(--ink-soft);margin:10px 0 24px;line-height:1.55}.empty-ideas-label{font-family:var(--font-mono);color:var(--ink-soft);margin:24px 0 12px;font-size:.78rem}.empty-ideas{flex-wrap:wrap;justify-content:center;gap:8px;margin:0;padding:0;list-style:none;display:flex}.idea-chip{border:1px solid var(--line);background:var(--surface-2);min-height:44px;color:var(--ink);cursor:pointer;border-radius:999px;padding:0 16px;font-size:.95rem;transition:border-color .15s,background-color .15s,transform .15s}.idea-chip:hover{border-color:var(--amber);background:color-mix(in srgb, var(--amber) 10%, var(--surface-2))}.idea-chip:active{transform:scale(.96)}.idea-chip:focus-visible{outline:2px solid var(--amber);outline-offset:3px}@keyframes empty-float{50%{translate:0 -5px}}.week{--dot:22px;border:1px solid var(--line-soft);background:var(--surface);box-shadow:var(--shadow-card);border-radius:22px;margin-bottom:32px;padding:14px 20px 18px}.week-empty{flex-direction:column;align-items:flex-start;gap:10px;padding:10px 0 4px;display:flex}.week-empty-title{font-family:var(--font-display);margin:0;font-size:1.15rem;font-weight:600}.week-empty-text{color:var(--ink-soft);margin:0 0 6px;line-height:1.55}.week-grid{flex-direction:column;display:flex}.week-row{grid-template-columns:minmax(0,1fr) repeat(7,34px) 40px;align-items:center;display:grid}.week-day{font-family:var(--font-mono);color:var(--ink-faint);border-radius:12px 12px 0 0;flex-direction:column;align-items:center;gap:2px;padding:6px 0;display:flex}.week-day-name{font-size:.7rem}.week-day-date{font-size:.68rem}.week-day.is-today{background:color-mix(in srgb, var(--amber) 12%, transparent);color:var(--amber-hover);font-weight:500}.week-habit{align-items:center;gap:10px;min-width:0;padding-right:10px;display:flex}.week-emoji{flex:none;font-size:1.35rem;line-height:1}.week-name{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:.92rem;overflow:hidden}.week-count{font-family:var(--font-mono);color:var(--ink-faint);text-align:right;font-size:.72rem}.week-cell{height:calc(var(--dot) + 24px);place-items:center;display:grid;position:relative}.week-cell.is-today-col{background:color-mix(in srgb, var(--amber) 12%, transparent)}.week-row:last-child .week-cell.is-today-col{border-radius:0 0 12px 12px}.week-habit,.week-count{animation:week-row-in .5s var(--ease-out) both;animation-delay:calc(var(--row) * 60ms)}.week-dot{z-index:1;width:var(--dot);height:var(--dot);border-radius:50%;display:inline-block;position:relative}.week-cell .week-dot{animation:week-dot-in .42s var(--ease-pop) both;animation-delay:calc(var(--row) * 60ms + var(--col) * 35ms + .12s)}.is-done .week-dot,.legend-done{background:var(--success);box-shadow:0 0 10px -3px var(--success)}.week-cell.join-left:before{content:"";background:color-mix(in srgb, var(--success) 45%, transparent);width:100%;height:8px;animation:week-join-in .4s var(--ease-out) both;animation-delay:calc(var(--row) * 60ms + var(--col) * 35ms + .2s);transform-origin:0;margin-top:-4px;position:absolute;top:50%;right:50%}.is-missed .week-dot,.legend-missed{border:2px solid var(--ring)}.is-today .week-dot{border:2px solid var(--amber);box-shadow:0 0 0 4px color-mix(in srgb, var(--amber) 15%, transparent)}.is-future .week-dot,.legend-future{border:2px dashed var(--ring);opacity:.5}.is-before .week-dot{background:var(--ring);opacity:.6;border-radius:2px;width:10px;height:2px}.week-legend{border-top:1px solid var(--line-soft);font-family:var(--font-mono);color:var(--ink-faint);flex-wrap:wrap;gap:8px 18px;margin:16px 0 0;padding:12px 0 0;font-size:.7rem;list-style:none;display:flex}.week-legend li{align-items:center;gap:6px;display:flex}.week-legend .week-dot{width:10px;height:10px}.week-legend .legend-missed,.week-legend .legend-future{border-width:1.5px}@keyframes week-row-in{0%{opacity:0;transform:translateY(8px)}}@keyframes week-dot-in{0%{opacity:0;transform:scale(.3)}}@keyframes week-join-in{0%{transform:scaleX(0)}}@media (width<=420px){.week{--dot:16px;padding:18px 12px 14px}.week-row{grid-template-columns:minmax(0,1fr) repeat(7,26px)}.week-count,.week-count-head{display:none}.week-habit{gap:6px;padding-right:6px}.week-name{font-size:.82rem}}.app{max-width:560px;padding:calc(28px + env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) calc(80px + env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));margin:0 auto}.app-header{margin-bottom:36px}.app-header h1{font-family:var(--font-display);letter-spacing:-.02em;margin:10px 0 0;font-size:clamp(2.6rem,8vw,3.4rem);font-weight:600;line-height:1}.header-top{justify-content:space-between;align-items:center;gap:12px;min-height:44px;margin-bottom:20px;display:flex}.wordmark{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);align-items:center;gap:8px;font-size:1.05rem;font-weight:600;display:inline-flex}.wordmark:before{content:"";background:var(--amber);width:9px;height:9px;box-shadow:0 0 10px -1px var(--amber);border-radius:50%}.daily-message{color:var(--ink-soft);margin:10px 0 0;font-size:.95rem;line-height:1.45}.title-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px 16px;margin-top:8px;display:flex}.app-header .view-title{white-space:nowrap;animation:title-in .38s var(--ease-out);margin:0}.view-panel.enter-from-right{animation:view-in-right .42s var(--ease-out)}.view-panel.enter-from-left{animation:view-in-left .42s var(--ease-out)}@keyframes view-in-right{0%{opacity:0;transform:translate(28px)}}@keyframes view-in-left{0%{opacity:0;transform:translate(-28px)}}@keyframes title-in{0%{opacity:0;transform:translateY(6px)}}@media (width<=640px){.app{padding-bottom:calc(112px + env(safe-area-inset-bottom))}.tab-dock{z-index:5;padding:10px max(16px, env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));border-top:1px solid var(--line-soft);background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(16px)saturate(140%);backdrop-filter:blur(16px)saturate(140%);justify-content:center;display:flex;position:fixed;bottom:0;left:0;right:0}.tab-dock .view-tabs{width:min(100%,420px);margin:0}.tab-dock .view-tab{flex:1;min-height:44px;font-size:1rem}}@media (width<=420px){.app-header .view-title{font-size:2.3rem}}
