@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800;900&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=JetBrains+Mono:wght@400;500;600&display=swap");*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{line-height:var(--leading-normal);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}img,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:var(--weight-semibold);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);color:var(--color-text-primary)}p{line-height:var(--leading-relaxed);color:var(--color-text-secondary)}code,pre{font-family:var(--font-mono)}:root{--color-navy-50:#eef0fa;--color-navy-100:#d5daf4;--color-navy-200:#b3bcec;--color-navy-300:#8a9ae1;--color-navy-400:#6278d5;--color-navy-500:#4059c7;--color-navy-600:#2f48b4;--color-navy-700:#22359e;--color-navy-800:#1a278a;--color-navy-900:#132272;--color-sky-50:#e7f8fd;--color-sky-100:#c4eef9;--color-sky-200:#9ae2f5;--color-sky-300:#6dd5f0;--color-sky-400:#4dc4e8;--color-sky-500:#2ab0d8;--color-sky-600:#1e97be;--color-sky-700:#157ba0;--color-sky-800:#0d5e7e;--color-sky-900:#07415c;--color-neutral-0:#ffffff;--color-neutral-50:#f5f5f7;--color-neutral-100:#e8e8ed;--color-neutral-200:#d2d2d7;--color-neutral-300:#b5b5bb;--color-neutral-400:#98989d;--color-neutral-500:#7c7c82;--color-neutral-600:#6e6e73;--color-neutral-700:#48484a;--color-neutral-800:#3a3a3c;--color-neutral-900:#1d1d1f;--color-success-light:#d4f5e2;--color-success:#30c97a;--color-success-dark:#1a7a4a;--color-warning-light:#fff3d4;--color-warning:#ffb340;--color-warning-dark:#966200;--color-error-light:#fde8e8;--color-error:#f04c4c;--color-error-dark:#a01a1a;--color-info-light:#dff0fc;--color-info:#4dc4e8;--color-info-dark:#0d5e7e;--color-bg:var(--color-neutral-0);--color-bg-secondary:var(--color-neutral-50);--color-bg-tertiary:var(--color-neutral-100);--color-surface:var(--color-neutral-0);--color-surface-raised:var(--color-neutral-50);--color-border:var(--color-neutral-200);--color-border-subtle:var(--color-neutral-100);--color-border-strong:var(--color-neutral-300);--color-text-primary:var(--color-neutral-900);--color-text-secondary:var(--color-neutral-600);--color-text-tertiary:var(--color-neutral-400);--color-text-inverse:var(--color-neutral-0);--color-text-brand:var(--color-navy-900);--color-text-accent:var(--color-sky-500);--color-accent:var(--color-sky-400);--color-brand:var(--color-navy-900);--color-glass-bg:rgba(255,255,255,0.72);--color-glass-border:rgba(255,255,255,0.55);--color-overlay:rgba(13,29,95,0.5);--font-display:"Outfit",system-ui,-apple-system,BlinkMacSystemFont,sans-serif;--font-sans:"DM Sans",system-ui,-apple-system,BlinkMacSystemFont,sans-serif;--font-mono:"JetBrains Mono","SF Mono",ui-monospace,monospace;--text-2xs:0.625rem;--text-xs:0.6875rem;--text-sm:0.8125rem;--text-base:0.9375rem;--text-md:1.0625rem;--text-lg:1.1875rem;--text-xl:1.3125rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--text-5xl:3rem;--text-6xl:3.75rem;--text-7xl:4.5rem;--text-8xl:6rem;--text-9xl:8rem;--weight-light:300;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-extrabold:800;--weight-black:900;--leading-none:1;--leading-tight:1.1;--leading-snug:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--leading-loose:2;--tracking-tighter:-0.04em;--tracking-tight:-0.02em;--tracking-snug:-0.01em;--tracking-normal:0em;--tracking-wide:0.04em;--tracking-wider:0.08em;--tracking-widest:0.16em;--font-heading:var(--font-display);--font-body:var(--font-sans);--text-display-xl:var(--text-9xl);--text-display-lg:var(--text-8xl);--text-display:var(--text-7xl);--text-title-lg:var(--text-5xl);--text-title:var(--text-4xl);--text-title-sm:var(--text-3xl);--text-headline:var(--text-2xl);--text-body-lg:var(--text-md);--text-body:var(--text-base);--text-body-sm:var(--text-sm);--text-label:var(--text-sm);--text-caption:var(--text-xs);--text-micro:var(--text-2xs);--space-px:1px;--space-0:0px;--space-0-5:0.125rem;--space-1:0.25rem;--space-1-5:0.375rem;--space-2:0.5rem;--space-2-5:0.625rem;--space-3:0.75rem;--space-3-5:0.875rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-7:1.75rem;--space-8:2rem;--space-9:2.25rem;--space-10:2.5rem;--space-12:3rem;--space-14:3.5rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--space-28:7rem;--space-32:8rem;--space-40:10rem;--space-48:12rem;--space-56:14rem;--space-64:16rem;--layout-gutter:var(--space-6);--layout-gutter-lg:var(--space-12);--layout-section:var(--space-24);--layout-section-sm:var(--space-16);--container-xs:480px;--container-sm:640px;--container-md:768px;--container-lg:1024px;--container-xl:1280px;--container-2xl:1440px;--container-max:1680px;--radius-none:0px;--radius-xs:4px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-2xl:24px;--radius-3xl:32px;--radius-full:9999px;--radius-button:var(--radius-full);--radius-card:var(--radius-2xl);--radius-input:var(--radius-md);--radius-badge:var(--radius-full);--radius-tag:var(--radius-sm);--radius-modal:var(--radius-2xl);--radius-tooltip:var(--radius-md);--radius-popover:var(--radius-xl);--radius-image:var(--radius-xl);--radius-nav:var(--radius-lg);--shadow-none:none;--shadow-xs:0 1px 2px rgba(0,0,0,0.04);--shadow-sm:0 1px 3px rgba(0,0,0,0.08),0 1px 2px rgba(0,0,0,0.05);--shadow-md:0 4px 12px rgba(0,0,0,0.08),0 2px 6px rgba(0,0,0,0.05);--shadow-lg:0 8px 24px rgba(0,0,0,0.10),0 4px 12px rgba(0,0,0,0.06);--shadow-xl:0 16px 48px rgba(0,0,0,0.12),0 8px 24px rgba(0,0,0,0.07);--shadow-2xl:0 32px 64px rgba(0,0,0,0.14),0 16px 32px rgba(0,0,0,0.09);--shadow-navy-sm:0 4px 12px rgba(19,34,114,0.18),0 2px 6px rgba(19,34,114,0.12);--shadow-navy-md:0 8px 24px rgba(19,34,114,0.22),0 4px 12px rgba(19,34,114,0.14);--shadow-navy-lg:0 16px 48px rgba(19,34,114,0.28),0 8px 24px rgba(19,34,114,0.18);--shadow-navy-xl:0 32px 64px rgba(19,34,114,0.32),0 16px 48px rgba(19,34,114,0.22);--shadow-sky-sm:0 4px 12px rgba(77,196,232,0.22),0 2px 6px rgba(77,196,232,0.14);--shadow-sky-md:0 8px 24px rgba(77,196,232,0.28),0 4px 12px rgba(77,196,232,0.18);--shadow-sky-lg:0 16px 48px rgba(77,196,232,0.35),0 8px 24px rgba(77,196,232,0.22);--shadow-inset-xs:inset 0 1px 1px rgba(0,0,0,0.04);--shadow-inset-sm:inset 0 1px 3px rgba(0,0,0,0.08);--shadow-inset-md:inset 0 2px 6px rgba(0,0,0,0.10);--ease-linear:linear;--ease-in:cubic-bezier(0.55,0,1,0.45);--ease-out:cubic-bezier(0.25,0.46,0.45,0.94);--ease-in-out:cubic-bezier(0.45,0,0.55,1);--ease-smooth:cubic-bezier(0.4,0,0.2,1);--ease-spring:cubic-bezier(0.34,1.56,0.64,1);--ease-bounce:cubic-bezier(0.68,-0.55,0.265,1.55);--ease-decel:cubic-bezier(0.0,0.0,0.2,1);--ease-accel:cubic-bezier(0.4,0.0,1,1);--duration-instant:50ms;--duration-fast:120ms;--duration-base:240ms;--duration-slow:400ms;--duration-slower:600ms;--duration-page:800ms;--transition-base:all var(--duration-base) var(--ease-out);--transition-colors:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),fill var(--duration-fast) var(--ease-out);--transition-transform:transform var(--duration-base) var(--ease-spring);--transition-shadow:box-shadow var(--duration-base) var(--ease-out);--transition-opacity:opacity var(--duration-base) var(--ease-out);--transition-fade-up:opacity var(--duration-slow) var(--ease-out),transform var(--duration-slow) var(--ease-out)}@keyframes pwa-spin{to{transform:rotate(1turn)}}@keyframes pwa-fade-in{0%{opacity:0}to{opacity:1}}@keyframes pwa-fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pwa-scale-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes pwa-slide-in-right{0%{opacity:0;transform:translateX(32px)}to{opacity:1;transform:translateX(0)}}@keyframes pwa-pulse-glow{0%,to{box-shadow:0 0 0 0 rgba(77,196,232,.4)}50%{box-shadow:0 0 0 8px rgba(77,196,232,0)}}@keyframes pwa-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes pwa-shimmer{0%{background-position:-200%}to{background-position:200%}}body,html{margin:0;padding:0;min-height:100%}body{background:var(--color-bg-secondary);color:var(--color-text-primary);font-family:var(--font-sans);font-size:var(--text-base)}.avatar{flex:none;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;background:linear-gradient(150deg,var(--color-sky-300),var(--color-navy-700));color:#fff}.small{color:var(--color-text-secondary)}.btn,.small{font-size:var(--text-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 18px;border-radius:999px;font-weight:600;cursor:pointer;border:1px solid transparent;white-space:nowrap;transition:filter var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--color-navy-900);color:#fff;box-shadow:var(--shadow-navy-sm)}.btn-primary:hover{filter:brightness(1.1)}.btn-secondary{background:linear-gradient(180deg,var(--color-sky-400),var(--color-sky-500));color:#fff}.btn-ghost{background:var(--color-surface);color:var(--color-text-secondary);border-color:var(--color-border)}.btn-ghost:hover{background:var(--color-bg-secondary)}.page{max-width:920px;margin:0 auto;padding:32px 16px 80px}.page-head{display:flex;align-items:center;gap:12px;margin-bottom:22px;flex-wrap:wrap}.page-head h1{margin:0;font-size:var(--text-2xl);color:var(--color-navy-900)}.page-head .spacer{flex:1 1}.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:800;color:var(--color-navy-900);margin-bottom:26px}.brand-mark{width:32px;height:32px;border-radius:9px;background:linear-gradient(150deg,var(--color-sky-400),var(--color-navy-800));display:inline-flex;justify-content:center;color:#fff}.brand-mark,.who{align-items:center}.who{font-size:var(--text-sm);color:var(--color-text-secondary);display:flex;gap:10px;margin-left:auto}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:16px;box-shadow:var(--shadow-xs);overflow:hidden}.board-row{display:flex;align-items:center;gap:12px;padding:14px 18px;color:var(--color-navy-900);border-top:1px solid var(--color-border-subtle)}.board-row:first-child{border-top:none}.board-row:hover{background:var(--color-bg-secondary)}.board-row .t{font-weight:600;font-size:var(--text-sm)}.board-row .m{font-size:12px;color:var(--color-text-tertiary);margin-top:2px}.tag{font-size:11px;font-weight:700;border-radius:999px;padding:2px 9px;background:var(--color-sky-50);color:var(--color-sky-700)}.empty{padding:28px 20px;color:var(--color-text-tertiary);font-size:var(--text-sm)}.modal-overlay{position:fixed;inset:0;background:var(--color-overlay);display:flex;align-items:flex-start;justify-content:center;padding:60px 16px;z-index:100}.modal{width:560px;max-width:100%;background:var(--color-surface);border-radius:18px;box-shadow:var(--shadow-2xl);padding:22px 24px}.modal h2{margin:0 0 14px;font-size:var(--text-xl);color:var(--color-navy-900)}.tpl{display:block;width:100%;text-align:left;border:1.5px solid var(--color-border);border-radius:12px;padding:12px 14px;margin-bottom:10px;background:var(--color-surface);cursor:pointer;font:inherit}.tpl.on{border-color:var(--color-sky-500);background:var(--color-sky-50)}.tpl .n{font-weight:700;color:var(--color-navy-900);font-size:var(--text-sm)}.tpl .d{font-size:12px;color:var(--color-text-secondary);margin-top:3px}.inp{width:100%;height:40px;border:1px solid var(--color-border);border-radius:10px;padding:0 12px;font:inherit;margin-bottom:14px}.err-box,.inp{font-size:var(--text-sm)}.err-box{background:var(--color-error-light);color:var(--color-error-dark);border-radius:12px;padding:12px 14px;margin-bottom:16px;line-height:1.45}.login-card{max-width:420px;margin:12vh auto 0;padding:30px 28px}.login-card h1{font-size:var(--text-2xl);margin:0 0 8px;color:var(--color-navy-900)}.login-card p{margin:0 0 20px;font-size:var(--text-sm)}