.shell{grid-template-columns:208px minmax(0,1fr);min-height:100%;display:grid}.side{background:var(--side);flex-direction:column;gap:18px;height:100vh;padding:14px 12px;display:flex;position:sticky;top:0}.side ul{gap:2px;display:grid}.side-chan{border-radius:var(--r-control);text-align:left;width:100%;transition:background-color var(--dur) var(--ease);grid-template-columns:28px minmax(0,1fr) 16px;align-items:center;gap:10px;padding:8px;display:grid}.side-chan:hover{background:var(--side-on)}.chip{border-radius:var(--r-inner);background:var(--ch);width:28px;height:28px;box-shadow:inset 0 0 0 1.5px var(--on-ch);display:inline-block}.side-chan b{font-weight:800;font-size:var(--text-heading);line-height:1.2;display:block}.side-chan small{font-size:var(--text-caption);color:var(--ink-2);display:block}.side-chan svg{color:var(--ink-2)}.side-link{border-radius:var(--r-control);height:38px;color:var(--ink-2);transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease);align-items:center;gap:12px;padding:0 10px;text-decoration:none;display:flex}.side-link:hover{background:var(--side-on);color:var(--ink)}.side-link.is-current{background:var(--side-on);color:var(--ink);font-weight:700}.side-foot{gap:8px;margin-top:auto;display:grid}.side-foot p{font-size:var(--text-label);color:var(--ink-2);padding:0 10px;line-height:1.5}.side-foot p b{font-size:var(--text-body);color:var(--ink);font-weight:700;display:block}.side-user{border-radius:var(--r-control);text-align:left;font-size:var(--text-label);color:var(--ink-2);transition:background-color var(--dur) var(--ease);justify-content:space-between;align-items:baseline;gap:8px;padding:8px 10px;display:flex}.side-user:hover{background:var(--side-on);color:var(--ink)}.side-user span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.side-user small{font-size:var(--text-caption);flex:none}.main{min-width:0;padding:28px clamp(20px,3vw,40px) 48px}@media (width<=900px){.shell{grid-template-columns:minmax(0,1fr)}.side{height:auto;position:static}}.login{background:var(--side);place-items:center;min-height:100%;padding:24px 16px;display:grid}.login-card{background:var(--surface);border-radius:var(--r-surface);gap:14px;width:min(100%,400px);padding:32px 28px 28px;display:grid}.login-mark{display:flex}.login-chip{border-radius:var(--r-inner);background:var(--ch);width:36px;height:36px;box-shadow:inset 0 0 0 1.5px var(--on-ch)}.login h1{font-size:var(--text-title);letter-spacing:-.015em;font-weight:800;line-height:1.25}.login-lead{color:var(--ink-2)}.login-google{width:100%;margin-top:6px;text-decoration:none}.login-google.is-off{opacity:.5;pointer-events:none}.login-note,.login-dev span{font-size:var(--text-label);color:var(--ink-2);line-height:1.55}.login-error{border-radius:var(--r-control);background:var(--help);color:var(--risk);font-size:var(--text-label);padding:10px 12px;line-height:1.55}.login-dev{border-top:1px solid var(--rule);flex-wrap:wrap;align-items:center;gap:10px 12px;margin-top:8px;padding-top:16px;display:flex}.login-dev .login-error{flex-basis:100%}.today{gap:24px;max-width:720px;display:grid}.today-head{gap:6px;display:grid}.today-head h1{font-size:var(--text-title);letter-spacing:-.015em;font-weight:800;line-height:1.25}.today-head p{color:var(--ink-2)}.today-steps{gap:8px;display:grid}.today-steps li{background:var(--surface);border-radius:var(--r-surface);grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px 16px;display:grid}.today-step-n{border-radius:var(--r-pill);background:var(--ch);width:32px;height:32px;color:var(--on-ch);font-weight:700;font-size:var(--text-control);place-items:center;display:grid}.today-steps li+li .today-step-n{background:var(--ctl);color:var(--ink-2)}.today-steps .is-done .today-step-n{background:var(--ctl);color:var(--ok)}.today-steps h2{font-size:var(--text-heading);font-weight:700}.today-steps p{font-size:var(--text-label);color:var(--ink-2);line-height:1.55}.today-note{font-size:var(--text-label);color:var(--ink-2)}@media (width<=600px){.today-steps li{grid-template-columns:32px minmax(0,1fr)}.today-steps li .btn{grid-column:2;justify-self:start}}:root{--ch-l:.87;--ch-c:.15;--ch-h:95;--ch:oklch(var(--ch-l) var(--ch-c) var(--ch-h));--on-ch:oklch(.22 .03 var(--ch-h));--ground:oklch(.985 calc(var(--ch-c) * .06) var(--ch-h));--side:oklch(.945 calc(var(--ch-c) * .3) var(--ch-h));--side-on:oklch(.885 calc(var(--ch-c) * .7) var(--ch-h));--help:oklch(.965 calc(var(--ch-c) * .16) var(--ch-h));--surface:oklch(.995 .003 var(--ch-h));--desk:oklch(.95 calc(var(--ch-c) * .1) var(--ch-h));--ctl:oklch(.93 calc(var(--ch-c) * .14) var(--ch-h));--rule:oklch(.87 calc(var(--ch-c) * .16) var(--ch-h));--ink:oklch(.23 .02 var(--ch-h));--ink-2:oklch(.42 .03 var(--ch-h));--skel:oklch(.93 calc(var(--ch-c) * .14) var(--ch-h));--skel-hi:oklch(.88 calc(var(--ch-c) * .2) var(--ch-h));--ok:oklch(45% .12 155);--warn:oklch(47% .14 45);--risk:oklch(50% .18 27);--selection:oklch(55% .17 258);--guide:oklch(60% .04 258);--paper:oklch(99% .003 95);--paper-ink:oklch(20% .01 95);--paper-warn:oklch(58% .17 50);--shadow-paper:0 4px 8px oklch(.3 .03 var(--ch-h) / .16);--font:"Gothic A1", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;--text-caption:12.5px;--text-label:13.5px;--text-control:14px;--text-body:15px;--text-heading:16px;--text-title:22px;--r-thumb:4px;--r-inner:8px;--r-control:10px;--r-surface:12px;--r-pill:16px;--dur:.18s;--ease:ease-out}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ground:oklch(.2 calc(var(--ch-c) * .08) var(--ch-h));--side:oklch(.25 calc(var(--ch-c) * .2) var(--ch-h));--side-on:oklch(.36 calc(var(--ch-c) * .42) var(--ch-h));--help:oklch(.228 calc(var(--ch-c) * .13) var(--ch-h));--surface:oklch(.285 calc(var(--ch-c) * .1) var(--ch-h));--desk:oklch(.165 calc(var(--ch-c) * .06) var(--ch-h));--ctl:oklch(.33 calc(var(--ch-c) * .14) var(--ch-h));--rule:oklch(.37 calc(var(--ch-c) * .14) var(--ch-h));--ink:oklch(.95 .01 var(--ch-h));--ink-2:oklch(.78 .025 var(--ch-h));--skel:oklch(.3 calc(var(--ch-c) * .12) var(--ch-h));--skel-hi:oklch(.37 calc(var(--ch-c) * .16) var(--ch-h));--ok:oklch(80% .12 155);--warn:oklch(80% .13 55);--risk:oklch(76% .13 25);--shadow-paper:0 4px 8px oklch(.08 .02 var(--ch-h) / .55)}}:root[data-theme=dark]{--ground:oklch(.2 calc(var(--ch-c) * .08) var(--ch-h));--side:oklch(.25 calc(var(--ch-c) * .2) var(--ch-h));--side-on:oklch(.36 calc(var(--ch-c) * .42) var(--ch-h));--help:oklch(.228 calc(var(--ch-c) * .13) var(--ch-h));--surface:oklch(.285 calc(var(--ch-c) * .1) var(--ch-h));--desk:oklch(.165 calc(var(--ch-c) * .06) var(--ch-h));--ctl:oklch(.33 calc(var(--ch-c) * .14) var(--ch-h));--rule:oklch(.37 calc(var(--ch-c) * .14) var(--ch-h));--ink:oklch(.95 .01 var(--ch-h));--ink-2:oklch(.78 .025 var(--ch-h));--skel:oklch(.3 calc(var(--ch-c) * .12) var(--ch-h));--skel-hi:oklch(.37 calc(var(--ch-c) * .16) var(--ch-h));--ok:oklch(80% .12 155);--warn:oklch(80% .13 55);--risk:oklch(76% .13 25);--shadow-paper:0 4px 8px oklch(.08 .02 var(--ch-h) / .55)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--ground);color:var(--ink);font:500 var(--text-body) / 1.45 var(--font);word-break:keep-all;overflow-wrap:anywhere;-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}ul,ol{padding:0;list-style:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;margin:0;padding:0}a{color:inherit}:focus-visible{outline:2px solid var(--selection);outline-offset:2px}.num{font-variant-numeric:tabular-nums}.btn{border-radius:var(--r-control);height:34px;font-size:var(--text-control);white-space:nowrap;transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease);justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:600;line-height:1;display:inline-flex}.btn-primary{background:var(--ink);color:var(--ground)}.btn-primary:hover{background:var(--ink-2)}.btn-secondary{background:var(--ctl);color:var(--ink);height:28px;padding:0 12px}.btn-secondary:hover{background:var(--rule)}.btn-large{height:44px;font-size:var(--text-body);padding:0 20px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:active{transform:scale(.98)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation-duration:0s!important}}
