@font-face{font-family:ChosunCentennial;src:url(https://cdn.jsdelivr.net/gh/fontbee/font@main/CHOSUN/ChosunCentennial.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:ChosunilboMyungjo;src:url(https://cdn.jsdelivr.net/gh/fontbee/font@main/CHOSUN/Chosunilbo_myungjo.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}:root{--primary: #000000;--on-primary: #ffffff;--ink: #000000;--canvas: #ffffff;--inverse-canvas: #000000;--inverse-ink: #ffffff;--hairline: #e6e6e6;--hairline-soft: #f1f1f1;--surface-soft: #f7f7f5;--block-lime: #dceeb1;--block-lilac: #c5b0f4;--block-cream: #f4ecd6;--block-pink: #efd4d4;--block-mint: #c8e6cd;--block-coral: #f3c9b6;--block-navy: #1f1d3d;--accent-magenta: #ff3d8b;--success: #1ea64a;--heat-1: #ededed;--heat-2: #cfcfcf;--heat-3: #8a8a8a;--heat-4: #000000;--theme-ground: var(--block-lime);--theme-ink: #1a1a1a;--theme-heat-1: color-mix(in srgb, var(--theme-ground) 25%, #ffffff);--theme-heat-2: color-mix(in srgb, var(--theme-ground) 55%, #ffffff);--theme-heat-3: color-mix(in srgb, var(--theme-ground) 70%, #000000);--theme-heat-4: color-mix(in srgb, var(--theme-ground) 55%, #000000);--r-xs: 2px;--r-sm: 6px;--r-md: 8px;--r-lg: 24px;--r-xl: 32px;--r-pill: 50px;--r-full: 9999px;--font-sans: "ChosunilboMyungjo", "Noto Sans KR", "Inter", system-ui, serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--font-display: "ChosunCentennial", "Noto Sans KR", serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);color:var(--ink);background:var(--canvas);min-height:100vh;line-height:1.45;letter-spacing:-.01em;font-feature-settings:"kern" 1;-webkit-font-smoothing:antialiased}a{color:var(--ink);text-decoration:none;font-weight:480;letter-spacing:-.1px}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:var(--r-sm)}.eyebrow{font-family:var(--font-mono);text-transform:uppercase;font-size:13px;font-weight:400;letter-spacing:.06em;color:var(--ink)}.muted-line{font-family:var(--font-mono);text-transform:uppercase;font-size:12px;font-weight:400;letter-spacing:.05em;color:var(--ink)}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 20px;background:var(--canvas)}.auth-card{width:100%;max-width:420px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg);padding:40px 32px 32px;text-align:center}.auth-mark{font-size:30px;color:var(--ink);width:64px;height:64px;line-height:64px;margin:0 auto 22px;border-radius:var(--r-full);background:var(--surface-soft)}.auth-title{font-size:32px;font-weight:340;line-height:1.1;letter-spacing:-.96px;margin-bottom:10px}.auth-sub{font-size:18px;font-weight:330;letter-spacing:-.26px;margin-bottom:28px}.auth-foot{margin-top:24px;font-size:16px;font-weight:330}.link-btn{background:none;border:none;padding:0;font:inherit;color:var(--ink);text-decoration:underline;cursor:pointer}.link-btn:disabled{opacity:.5;cursor:default}.field{display:block;text-align:left;margin-bottom:18px}.field>span{display:block;font-family:var(--font-mono);text-transform:uppercase;font-size:12px;font-weight:400;letter-spacing:.06em;color:var(--ink);margin-bottom:8px}.field input,.field textarea,.field select{width:100%;font-family:var(--font-sans);font-size:18px;font-weight:320;letter-spacing:-.26px;color:var(--ink);background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-md);padding:12px 14px;transition:border-color .15s ease,box-shadow .15s ease}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--primary);box-shadow:0 0 0 2px #00000014;outline:none}.field input:disabled{color:var(--ink);background:var(--surface-soft)}.field textarea{resize:vertical}.btn-primary{width:100%;font-family:var(--font-sans);font-size:20px;font-weight:480;letter-spacing:-.1px;color:var(--on-primary);background:var(--primary);border:none;border-radius:var(--r-pill);padding:12px 24px;cursor:pointer;margin-top:8px;transition:transform .1s ease,opacity .15s ease}.btn-primary:hover{opacity:.9}.btn-primary:active{transform:scale(.985)}.btn-primary:disabled{opacity:.4;cursor:default}.form-error{color:var(--ink);background:var(--block-pink);border-radius:var(--r-md);padding:10px 14px;font-size:16px;font-weight:450;margin-bottom:14px}.form-ok{color:var(--ink);background:var(--block-mint);border-radius:var(--r-md);padding:10px 14px;font-size:16px;font-weight:450;margin-bottom:14px}.shell{width:100%;margin:0 auto;min-height:100vh}.topnav{display:flex;align-items:center;gap:12px;min-height:56px;padding:8px clamp(16px,4vw,48px);border-bottom:2px solid var(--theme-ground, var(--hairline));position:sticky;top:0;z-index:10;background:var(--canvas)}.brand{font-family:var(--font-sans);font-size:24px;font-weight:600;letter-spacing:-.5px;color:var(--ink);text-decoration:none}.brand:hover{text-decoration:none}.nav-links{display:flex;align-items:center;gap:4px;margin-left:auto}.nav-link{font-size:16px;font-weight:450;letter-spacing:-.1px;color:var(--ink);padding:8px 14px;border-radius:var(--r-pill);text-decoration:none}.nav-link:hover{text-decoration:none;background:var(--surface-soft)}.nav-link.active,.nav-link.active:hover{color:var(--on-primary);background:var(--primary)}.nav-logout{font-family:var(--font-sans);font-size:16px;font-weight:450;letter-spacing:-.1px;color:var(--ink);background:var(--surface-soft);border:none;border-radius:var(--r-pill);padding:8px 16px;cursor:pointer}.nav-logout:hover{background:var(--hairline)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;margin-right:2px;border:1px solid var(--hairline);border-radius:var(--r-full);background:var(--canvas);cursor:pointer;transition:background .15s,border-color .15s}.theme-toggle:hover{background:var(--surface-soft);border-color:var(--ink)}.theme-toggle-dot{width:20px;height:20px;border-radius:50%;box-shadow:inset 0 0 0 1px #00000014}.theme-swatches{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.theme-swatch{width:30px;height:30px;padding:0;border:1px solid var(--hairline);border-radius:50%;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:box-shadow .15s,transform .1s}.theme-swatch:hover{transform:scale(1.08)}.theme-swatch.selected{border-color:transparent;box-shadow:0 0 0 2px var(--canvas),0 0 0 4px var(--ink)}.theme-swatch-check{font-size:15px;line-height:1}.theme-swatch-hint{display:block;margin-top:8px;font-family:var(--font-mono);font-size:12px;color:var(--ink-soft, var(--ink))}.content{padding:clamp(28px,3.5vw,56px) clamp(16px,4vw,48px) 96px}.page-head{margin-bottom:32px}.page-head h2{font-size:40px;font-weight:340;line-height:1.1;letter-spacing:-.96px;margin-top:8px}.dash{display:grid;gap:48px}.dash-head{text-align:center;margin-bottom:0}.dash-main{min-width:0}.dash-today{display:grid;gap:28px}@media (min-width: 860px){.dash-today{grid-template-columns:300px minmax(0,1fr);align-items:start;column-gap:56px}.dash-today .note-field,.dash-today .save-hint{grid-column:1 / -1}}.dash-date{font-size:32px;font-weight:340;line-height:1.1;letter-spacing:-.96px;margin:10px 0 24px}.dash-stat{margin-top:20px}.dash-stat .big{display:block;font-size:48px;font-weight:340;line-height:1;letter-spacing:-.96px;color:var(--ink)}.medallion{position:relative;width:120px;height:120px;margin:0 auto;border-radius:var(--r-full);overflow:hidden;border:1px solid var(--hairline);background:var(--surface-soft)}.medallion-fill{position:absolute;left:0;right:0;bottom:0;overflow:hidden;background:var(--theme-heat-3);transition:height .9s cubic-bezier(.22,.61,.36,1)}.medallion-glyph{position:absolute;left:0;right:0;bottom:0;height:120px;display:flex;align-items:center;justify-content:center;font-size:52px;font-weight:500;color:var(--ink)}.medallion-glyph-fill{color:#fff}.medallion.complete{border:2px solid var(--primary)}.list{background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg);overflow:hidden}.item{display:flex;align-items:flex-start;gap:14px;padding:16px 20px;cursor:pointer;-webkit-user-select:none;user-select:none;border-top:1px solid var(--hairline-soft);transition:background .15s ease}.item:first-child{border-top:none}.item:hover{background:var(--surface-soft)}.box{flex:none;width:24px;height:24px;border-radius:var(--r-sm);margin-top:1px;border:1.5px solid var(--ink);position:relative;transition:background .15s ease}.box:after{content:"";position:absolute;left:8px;top:3px;width:6px;height:12px;border:solid var(--on-primary);border-width:0 2.5px 2.5px 0;transform:rotate(45deg) scale(0);transition:transform .15s ease}.txt{font-size:18px;font-weight:320;letter-spacing:-.26px;color:var(--ink)}.item.done .box{background:var(--primary);border-color:var(--primary)}.item.done .box:after{transform:rotate(45deg) scale(1)}.item.done .txt{text-decoration:line-through;font-weight:330}.note-field{margin-top:0}.save-hint{font-family:var(--font-mono);text-transform:uppercase;font-size:12px;letter-spacing:.05em;color:var(--ink);text-align:right;margin-top:6px}.principles{margin-top:0;background:var(--theme-ground);border-radius:var(--r-lg);padding:clamp(28px,4vw,48px);color:var(--theme-ink)}.principles .eyebrow{color:var(--theme-ink)}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:32px;margin-top:24px}.pcard{background:transparent;border:none;border-radius:0;padding:0;position:relative;overflow:visible}.pcard:before{content:attr(data-n);position:static;display:block;font-size:36px;font-weight:340;letter-spacing:-.96px;line-height:1;color:var(--theme-ink);margin-bottom:10px}.pcard h3{font-size:24px;font-weight:540;line-height:1.3;letter-spacing:-.26px;color:var(--theme-ink);margin-bottom:8px}.pcard p{font-size:16px;font-weight:330;line-height:1.45;letter-spacing:-.14px;color:var(--theme-ink);max-width:100%}.card-form{max-width:560px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg);padding:24px}.cal-head{text-align:center}.cal-nav{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:8px}.cal-nav h2{font-size:32px;font-weight:340;letter-spacing:-.96px;min-width:160px}.cal-arrow{font-family:var(--font-sans);font-size:20px;color:var(--ink);background:var(--surface-soft);border:none;border-radius:var(--r-full);width:40px;height:40px;cursor:pointer;line-height:1;display:inline-flex;align-items:center;justify-content:center}.cal-arrow:hover{background:var(--hairline)}.weekrow{display:grid;grid-template-columns:repeat(7,1fr);margin:24px auto 8px}.wd{text-align:center;font-family:var(--font-mono);text-transform:uppercase;font-size:12px;letter-spacing:.05em;color:var(--ink)}.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:clamp(6px,1vw,10px)}.cal-cell{aspect-ratio:auto;min-height:clamp(54px,8vw,104px);border-radius:var(--r-md);border:1px solid var(--hairline);background:var(--canvas);color:var(--ink);font-family:var(--font-sans);cursor:pointer;display:flex;align-items:flex-start;justify-content:flex-end;padding:8px;transition:border-color .15s ease,transform .1s ease}.cal-cell:hover{transform:translateY(-1px);border-color:var(--primary)}.cell-day{font-size:13px;font-weight:450;color:var(--ink)}.cal-cell.dim{opacity:.35}.cal-cell.today{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary) inset}.cal-cell.lvl-1{background:var(--theme-heat-1);border-color:var(--theme-heat-1)}.cal-cell.lvl-2{background:var(--theme-heat-2);border-color:var(--theme-heat-2)}.cal-cell.lvl-3{background:var(--theme-heat-3);border-color:var(--theme-heat-3)}.cal-cell.lvl-4{background:var(--theme-heat-4);border-color:var(--theme-heat-4)}.cal-cell.lvl-3 .cell-day,.cal-cell.lvl-4 .cell-day{color:var(--on-primary)}.legend{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:24px}.lg{width:16px;height:16px;border-radius:var(--r-xs);border:1px solid var(--hairline)}.lg.lvl-1{background:var(--theme-heat-1)}.lg.lvl-2{background:var(--theme-heat-2)}.lg.lvl-3{background:var(--theme-heat-3)}.lg.lvl-4{background:var(--theme-heat-4)}.cal-pagehead{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:24px}.cal-toggle{display:inline-flex;border:1px solid var(--hairline);border-radius:var(--r-pill);padding:3px}.cal-toggle button{font-family:var(--font-sans);font-size:15px;font-weight:450;color:var(--heat-3);background:transparent;border:none;border-radius:var(--r-pill);padding:6px 18px;cursor:pointer;transition:background .15s,color .15s}.cal-toggle button.active{color:var(--on-primary);background:var(--primary)}.cal-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:24px 0 28px}.cal-stat{background:var(--surface-soft);border-radius:var(--r-md);padding:14px 16px}.cal-stat.streak{background:var(--theme-ground)}.cal-stat-label{display:block;font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;color:var(--heat-3)}.cal-stat.streak .cal-stat-label,.cal-stat.streak .cal-stat-value,.cal-stat.streak .cal-stat-unit{color:var(--theme-ink)}.cal-stat-value{display:block;font-size:28px;font-weight:340;letter-spacing:-.6px;color:var(--ink);margin-top:4px}.cal-stat-unit{font-size:13px;color:var(--heat-3)}.cal-monthbody{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:28px;align-items:start}.cal-monthbody .weekrow{margin-top:0}.cal-cell.selected{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary)}.cal-preview{background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg);padding:18px 20px}.cal-preview-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:14px}.cal-preview-date{font-family:var(--font-mono);font-size:15px;font-weight:450;color:var(--ink)}.cal-preview-count{font-family:var(--font-mono);font-size:12px;color:var(--theme-ink);background:var(--theme-ground);border-radius:var(--r-sm);padding:3px 8px}.cal-preview-list{list-style:none;display:flex;flex-direction:column;gap:6px}.cal-preview-list li{display:flex;align-items:flex-start;gap:8px;font-size:14px;color:var(--heat-3)}.cal-preview-list li i{font-size:18px;line-height:1.4;color:var(--heat-2)}.cal-preview-list li.done,.cal-preview-list li.done i{color:var(--ink)}.cal-preview-memo{margin-top:14px;padding-top:14px;border-top:1px solid var(--hairline);font-size:14px;color:var(--ink);line-height:1.55}.cal-preview-memo-label{display:block;font-family:var(--font-mono);font-size:12px;color:var(--heat-3);margin-bottom:6px}.cal-preview-more{width:100%;margin-top:16px;font-family:var(--font-sans);font-size:14px;font-weight:450;color:var(--ink);background:var(--surface-soft);border:1px solid var(--hairline);border-radius:var(--r-pill);padding:9px 14px;cursor:pointer;transition:background .15s,border-color .15s}.cal-preview-more:hover{background:var(--canvas);border-color:var(--ink)}.cal-year-summary{text-align:center;font-family:var(--font-mono);font-size:13px;color:var(--heat-3);margin:16px 0 24px}.cal-yeargrid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}.cal-minilabel{font-family:var(--font-mono);font-size:12px;color:var(--ink);margin-bottom:6px}.cal-minicells{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.cal-minicell{aspect-ratio:1;border-radius:var(--r-xs);border:1px solid var(--hairline);background:var(--canvas);padding:0;cursor:pointer}.cal-minicell.empty{border-color:transparent;background:transparent;cursor:default}.cal-minicell.lvl-1{background:var(--theme-heat-1);border-color:var(--theme-heat-1)}.cal-minicell.lvl-2{background:var(--theme-heat-2);border-color:var(--theme-heat-2)}.cal-minicell.lvl-3{background:var(--theme-heat-3);border-color:var(--theme-heat-3)}.cal-minicell.lvl-4{background:var(--theme-heat-4);border-color:var(--theme-heat-4)}.cal-minicell.today{box-shadow:0 0 0 1px var(--primary)}@media (max-width: 900px){.cal-monthbody{grid-template-columns:1fr}.cal-stats,.cal-yeargrid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 480px){.cal-stats{grid-template-columns:1fr}}.brand,.auth-mark,.auth-title,.page-head h2,.dash-date,.dash-stat .big,.medallion-glyph,.cal-nav h2,.pcard h3,.pcard:before{font-family:var(--font-display);font-weight:400;letter-spacing:normal}@media (prefers-reduced-motion: reduce){*{transition:none!important}}@media (max-width: 900px){.cards{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.principles{border-radius:0;margin-left:calc(-1*clamp(16px,4vw,48px));margin-right:calc(-1*clamp(16px,4vw,48px))}}@media (max-width: 560px){.nav-link{padding:8px 10px;font-size:14px}.nav-logout{padding:8px 12px;font-size:14px}.auth-title{font-size:28px}.page-head h2{font-size:32px}.cal-nav h2{min-width:120px;font-size:26px}.dash-stat .big{font-size:40px}.cards{grid-template-columns:1fr}}.admin-add{margin-bottom:28px}.admin-list{display:flex;flex-direction:column}.admin-row{display:flex;align-items:center;gap:14px;padding:14px 20px;border-top:1px solid var(--hairline)}.admin-row:first-child{border-top:none}.admin-key{flex:0 0 auto;min-width:44px;font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;color:var(--heat-3);background:var(--surface-soft);border-radius:var(--r-sm);padding:4px 8px;text-align:center}.admin-label{flex:1 1 auto;font-family:var(--font-sans);font-size:16px;color:var(--ink);word-break:keep-all}.admin-edit-input{flex:1 1 auto;font-family:var(--font-sans);font-size:16px;color:var(--ink);border:1px solid var(--hairline);border-radius:var(--r-md);padding:8px 12px}.admin-edit-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px #00000014;outline:none}.admin-actions{flex:0 0 auto;display:flex;gap:8px}.admin-btn{font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;color:var(--ink);background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-pill);padding:6px 14px;cursor:pointer;transition:background .15s,border-color .15s}.admin-btn:hover:not(:disabled){background:var(--surface-soft);border-color:var(--ink)}.admin-btn:disabled{opacity:.5;cursor:default}.admin-btn.danger{color:var(--accent-magenta);border-color:#f3c9d6}.admin-btn.danger:hover:not(:disabled){background:var(--block-pink);border-color:var(--accent-magenta)}.admin-hint{margin:10px 0 0;font-family:var(--font-sans);font-size:13px;color:var(--heat-3)}.admin-toggle{flex:0 0 auto;display:inline-flex;align-items:center;cursor:pointer}.admin-toggle input{width:18px;height:18px;cursor:pointer;accent-color:var(--ink)}.admin-toggle input:disabled{cursor:default}.admin-row.inactive .admin-label{color:var(--heat-3);text-decoration:line-through}.admin-row.inactive .admin-key{opacity:.6}.admin-badge{flex:0 0 auto;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--heat-3);background:var(--surface-soft);border:1px solid var(--hairline);border-radius:var(--r-sm);padding:3px 8px}
