:root{--canvas:#f4f6f9;--surface:#ffffff;--ink:#111827;--muted:#6b7280;--line:#e7eaf0;--accent:#0b6b60;--accent-bright:#0e9f8e;--accent-soft:#e6f6f3;--navy:#0f172a;--danger:#c2410c;--danger-soft:#fdeee6;--ok:#15803d;--ok-soft:#e6f4ea;--info:#1d4ed8;--info-soft:#e8eefc;--warn:#b45309;--warn-soft:#fff4e5;--radius-control:8px;--radius-surface:12px;--control-h:36px;--control-h-sm:30px;--control-h-lg:44px;--shell-top-h:56px;--shell-side-w:232px;--page-pad-x:26px;--page-pad-y:22px;--motion-fast:180ms;--motion-standard:420ms;--motion-loop:4200ms;--motion-ease:cubic-bezier(.22,1,.36,1)}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{background:var(--canvas);color:var(--ink);font-family:Pretendard,Noto Sans KR,Apple SD Gothic Neo,Malgun Gothic,system-ui,sans-serif;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}.login-card>p{margin:0}.login-card>p:not(.eyebrow){margin:0 0 12px;color:var(--muted)}.role-switcher{display:flex;gap:2px;padding:3px;border-radius:10px;background:var(--canvas)}.role-switcher a{padding:6px 14px;border-radius:8px;color:var(--muted);font-size:14px;line-height:21px;white-space:nowrap}.role-switcher a.active{background:#0f172a;color:var(--surface);font-weight:600}.eyebrow{color:var(--accent);font-size:12px;font-weight:700}h1{margin:0 0 4px;font-size:22px;line-height:1.5;letter-spacing:-.3px}.login-page{display:grid;place-items:center;min-height:100vh;padding:32px;background:var(--canvas)}.login-card{display:grid;grid-gap:10px;gap:10px;width:min(420px,100%);padding:32px;border:1px solid var(--line);border-radius:var(--radius-surface);background:var(--surface);box-shadow:0 18px 50px #173d3012}.login-card h1{margin:0;font-size:26px;line-height:1.3;letter-spacing:-.6px}.login-card label{margin-top:8px;color:var(--muted);font-size:12px;font-weight:700}.login-providers{display:grid;grid-gap:8px;gap:8px;margin-top:8px}.ui-btn.provider-kakao,.ui-btn.provider-kakao:hover{border-color:#fee500;background:#fee500;color:#191600}.login-divider{display:flex;align-items:center;gap:10px;margin:10px 0 0;color:var(--muted);font-size:12px}.login-divider:after,.login-divider:before{content:"";height:1px;flex:1 1;background:var(--line)}.login-submit{margin-top:12px}.back-link{margin-top:10px;color:var(--accent);font-size:12px;text-align:center}.app-shell{display:grid;grid-template-rows:var(--shell-top-h) minmax(0,1fr);height:100dvh;overflow:hidden;background:var(--canvas);color:var(--ink)}.app-top{z-index:50;display:flex;align-items:center;gap:14px;min-width:0;padding:0 16px;border-bottom:1px solid var(--line);background:var(--surface)}.app-brand{display:inline-flex;align-items:baseline;gap:8px;min-width:0;color:var(--ink);font-size:14px;font-weight:700;letter-spacing:-.2px;white-space:nowrap}.app-brand small{overflow:hidden;color:var(--muted);font-size:11px;font-weight:400;text-overflow:ellipsis}.app-top-spacer{flex:1 1;min-width:8px}.app-top-actions{display:flex;align-items:center;gap:8px}.app-top .app-menu-button{display:none}.app-body{display:grid;grid-template-columns:var(--shell-side-w) minmax(0,1fr);min-height:0}.app-side{overflow-y:auto;padding:8px 14px 16px;border-right:1px solid var(--line);background:var(--surface)}.app-main,.app-side{display:flex;flex-direction:column;min-height:0}.app-main{min-width:0;overflow:hidden}.app-crumb{display:flex;flex:none;align-items:center;gap:8px;padding:16px var(--page-pad-x) 0}.app-crumb span{color:var(--muted);font-size:12px}.app-page{flex:1 1;min-height:0;overflow:auto;padding:var(--page-pad-y) var(--page-pad-x) 28px}.app-crumb+.app-page{padding-top:12px}.page-fill{display:flex;flex-direction:column;height:100%;min-height:var(--page-fill-min,520px)}.page-fill-body{flex:1 1;min-height:0}.app-nav{display:grid;grid-gap:0;gap:0}.app-nav-group{padding:16px 12px 6px;color:#9ca3af;font-size:11px;font-weight:600}.app-nav-link{display:flex;align-items:center;gap:10px;width:100%;min-height:38px;padding:0 12px;border:0;border-radius:10px;background:transparent;color:#374151;font:inherit;font-size:14px;text-align:left;cursor:pointer}.app-nav-link:hover{background:var(--canvas)}.app-nav-link.is-active,.app-nav-link[aria-current=page]{background:var(--accent-soft);color:var(--accent);font-weight:700}.app-nav-icon{display:inline-grid;place-items:center;flex:none;width:18px;opacity:.85}.app-nav-badge{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-box-trim:trim-both;text-box-edge:cap alphabetic;min-width:18px;height:18px;margin-left:auto;padding:0 5px;border-radius:9px;background:#f0573a;color:#fff;font-size:11px;font-weight:700}.app-side-foot{display:grid;grid-gap:2px;gap:2px;margin-top:auto;padding-top:12px}.app-plan{margin:12px 0 6px;padding:12px 12px 0;border-top:1px solid var(--line);color:var(--muted);font-size:12px}.app-plan-bar{height:5px;margin:6px 0;overflow:hidden;border-radius:3px;background:var(--line)}.app-plan-bar i{display:block;height:100%;border-radius:inherit;background:var(--accent-bright)}.app-nav-link.is-help{color:var(--accent);font-weight:600}.app-nav-link.is-quiet{color:var(--muted);font-size:12px}.app-scrim{position:fixed;inset:var(--shell-top-h) 0 0 0;z-index:70;padding:0;border:0;background:rgba(20,24,34,.45)}.app-drawer{position:fixed;top:var(--shell-top-h);bottom:0;left:0;z-index:71;display:flex;flex-direction:column;width:min(300px,86vw);padding:8px 14px 16px;overflow:auto;border-right:1px solid var(--line);background:var(--surface);box-shadow:8px 0 24px rgba(15,23,42,.12)}.app-shell.is-preview .app-body{grid-template-columns:minmax(0,1fr);justify-items:center;overflow:auto;background:#e9ecf1}.app-shell.is-preview .app-side{display:none}.app-shell.is-preview .app-top .app-menu-button{display:inline-grid}.app-shell.is-preview .app-main{width:430px;max-width:100%;height:calc(100% - 24px);min-height:640px;margin:12px 0;overflow:hidden;border:10px solid #1c1f26;border-radius:34px;background:var(--canvas)}.app-shell.is-preview .app-crumb{padding:14px 14px 0}.app-shell.is-preview .app-page{padding:14px}.button,.lo .btn,.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--control-h);min-height:0;padding:0 14px;border:1px solid var(--line);border-radius:var(--radius-control);background:var(--surface);color:var(--ink);font:inherit;font-size:13px;font-weight:600;line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer;transition:background var(--motion-fast),border-color var(--motion-fast),color var(--motion-fast)}.button:hover,.lo .btn:hover,.ui-btn:hover{border-color:#d3d9e3;background:#f8fafc}.button:disabled,.lo .btn:disabled,.ui-btn:disabled{opacity:.45;cursor:not-allowed}.button-primary,.lo .btn.p,.ui-btn--primary{border-color:var(--navy);background:var(--navy);color:#fff}.button-primary:hover,.lo .btn.p:hover,.ui-btn--primary:hover{border-color:#1e293b;background:#1e293b}.lo .btn.g,.ui-btn--accent{border-color:var(--accent);background:var(--accent);color:#fff}.lo .btn.g:hover,.ui-btn--accent:hover{border-color:#095a51;background:#095a51}.lo .btn.danger,.ui-btn--danger{border-color:#f2c7b6;color:var(--danger)}.lo .btn.danger:hover,.ui-btn--danger:hover{border-color:#e9a98f;background:var(--danger-soft)}.ui-btn--ghost{border-color:transparent;background:transparent}.ui-btn--ghost:hover{border-color:transparent;background:var(--canvas)}.button-small,.lo .btn.s,.ui-btn--sm{height:var(--control-h-sm);padding:0 10px;font-size:12px}.ui-btn--lg{height:var(--control-h-lg);padding:0 20px;font-size:15px}.ui-btn--block{width:100%}.ui-iconbtn{display:inline-grid;place-items:center;flex:none;width:var(--control-h);height:var(--control-h);padding:0;border:0;border-radius:var(--radius-control);background:transparent;color:var(--muted);font:inherit;cursor:pointer;transition:background var(--motion-fast),color var(--motion-fast)}.ui-iconbtn:hover{background:var(--canvas);color:var(--ink)}.ui-iconbtn:disabled{opacity:.4;cursor:not-allowed}.ui-iconbtn--sm{width:var(--control-h-sm);height:var(--control-h-sm)}.ui-iconbtn--outline{border:1px solid var(--line);background:var(--surface)}.ui-iconbtn.is-on{background:var(--accent-soft);color:var(--accent)}.lo .field input:not([type=checkbox]):not([type=radio]):not([type=range]),.lo .field select,.lo .toolbar input:not([type=checkbox]):not([type=radio]),.lo .toolbar select,.ui-input,.ui-select{height:var(--control-h);padding:0 12px;border:1px solid var(--line);border-radius:var(--radius-control);background:var(--surface);color:var(--ink);font:inherit;font-size:13px}.lo .field textarea,.ui-textarea{padding:9px 12px;border:1px solid var(--line);border-radius:var(--radius-control);background:var(--surface);color:var(--ink);font:inherit;font-size:13px;line-height:1.6;resize:vertical}.ui-input--sm,.ui-select--sm{height:var(--control-h-sm);padding:0 8px;font-size:12px}.ui-input--lg,.ui-select--lg{height:var(--control-h-lg);padding:0 14px;font-size:14px}.ui-composer-input::placeholder,.ui-input::placeholder,.ui-textarea::placeholder{color:#9ca3af}.app-nav-link:focus-visible,.button:focus-visible,.ui-btn:focus-visible,.ui-chip:focus-visible,.ui-iconbtn:focus-visible,.ui-input:focus-visible,.ui-select:focus-visible,.ui-tab:focus-visible,.ui-textarea:focus-visible,.ui-toggle:focus-visible{outline:2px solid var(--accent-bright);outline-offset:2px}.lo .toolbar,.ui-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px}.lo .toolbar .sp,.ui-toolbar-spacer{flex:1 1}.lo .toolbar .btn.s,.ui-toolbar .ui-btn--sm{height:var(--control-h);padding:0 14px;font-size:13px}.lo .field,.ui-field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.lo .field .flabel,.lo .field label,.ui-field-label,.ui-field>label{color:var(--muted);font-size:12px;font-weight:600}.ui-composer{display:flex;flex:none;align-items:center;gap:4px;padding:10px 12px;border-top:1px solid var(--line);background:var(--surface)}.ui-composer-input{flex:1 1;min-width:0;height:var(--control-h);margin:0 4px;padding:0 12px;border:0;border-radius:var(--radius-control);background:var(--canvas);color:var(--ink);font:inherit;font-size:13px}.ui-composer-input:focus-visible{outline:2px solid var(--accent-bright);outline-offset:0;background:var(--surface)}.ui-composer-input:disabled{color:var(--muted)}.lo .card,.ui-card{position:relative;padding:18px;border:1px solid var(--line);border-radius:var(--radius-surface);background:var(--surface);box-shadow:0 1px 2px rgba(20,26,43,.04)}.ui-page-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px;margin:0 0 16px}.ui-page-head h1{margin:0 0 4px;font-size:22px;line-height:1.5;letter-spacing:-.3px}.ui-page-head p{margin:0;color:var(--muted)}.ui-page-head-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.lo .tabs,.ui-tabs{display:flex;flex-wrap:wrap;gap:2px;margin:0 0 14px;border-bottom:1px solid var(--line)}.lo .tabs button,.ui-tab{display:inline-flex;align-items:center;gap:6px;height:38px;margin-bottom:-1px;padding:0 14px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font:inherit;font-size:14px;white-space:nowrap;cursor:pointer}.lo .tabs button:hover,.ui-tab:hover{color:var(--ink)}.lo .tabs button.on,.ui-tab[aria-selected=true]{border-bottom-color:var(--accent-bright);color:var(--accent);font-weight:700}.ui-chip{display:inline-flex;align-items:center;gap:6px;height:var(--control-h-sm);padding:0 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:#374151;font:inherit;font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer}.ui-chip:hover{background:var(--canvas)}.ui-chip.is-on,.ui-chip[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:#fff}.lo .toolbar .ui-chip,.ui-chip--lg,.ui-toolbar .ui-chip{height:var(--control-h);padding:0 14px}.ui-chip b{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-box-trim:trim-both;text-box-edge:cap alphabetic;min-width:18px;height:18px;padding:0 6px;border-radius:999px;background:var(--line);color:var(--ink);font-size:11px}.ui-chip.is-on b,.ui-chip[aria-pressed=true] b{background:rgba(255,255,255,.25);color:#fff}.lo .pill,.ui-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border:1px solid var(--line);border-radius:10px;background:var(--canvas);color:var(--muted);font-size:11px;line-height:16px;white-space:nowrap}.lo .pill.red,.ui-pill--red{border-color:transparent;background:var(--danger-soft);color:var(--danger)}.lo .pill.green,.ui-pill--green{border-color:transparent;background:var(--ok-soft);color:var(--ok)}.lo .pill.blue,.ui-pill--blue{border-color:transparent;background:var(--info-soft);color:var(--info)}.lo .pill.gold,.ui-pill--gold{border-color:transparent;background:var(--warn-soft);color:var(--warn)}.lo .toggle,.ui-toggle{position:relative;display:inline-block;flex:none;width:36px;height:20px;padding:0;border:0;border-radius:10px;background:#c9ced6;vertical-align:middle;cursor:pointer;transition:background var(--motion-fast)}.lo .toggle i,.ui-toggle i{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left var(--motion-fast)}.lo .toggle.on,.ui-toggle[aria-checked=true]{background:var(--ok)}.lo .toggle.on i,.ui-toggle[aria-checked=true] i{left:18px}.ui-toggle:disabled{opacity:.5;cursor:not-allowed}.ui-empty{padding:36px 16px;color:var(--muted);text-align:center}.ui-empty strong{display:block;margin-bottom:4px;color:var(--ink)}.ui-empty p{margin:0 0 12px}.ui-toast{position:fixed;bottom:24px;left:50%;z-index:200;max-width:min(520px,calc(100vw - 32px));padding:10px 18px;border-radius:var(--radius-control);background:var(--navy);color:#fff;font-size:13px;line-height:1.5;transform:translateX(-50%);box-shadow:0 8px 24px rgba(0,0,0,.2)}.ui-overlay{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:16px}.ui-overlay-scrim{position:absolute;inset:0;padding:0;border:0;background:rgba(20,24,34,.45);cursor:default}.ui-dialog{position:relative;width:min(640px,100%);max-height:min(88vh,820px);overflow:auto;padding:22px;border-radius:var(--radius-surface);background:var(--surface);box-shadow:0 24px 60px rgba(15,23,42,.2);outline:none}.ui-dialog--wide{width:min(880px,100%)}.ui-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px}.ui-dialog-head h2{margin:0;font-size:17px}.lo .foot,.ui-dialog-foot{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:16px}.ui-icon-text{display:inline-flex;align-items:center;gap:6px}.ui-inline-form{display:contents}.ui-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (max-width:900px){.app-body{grid-template-columns:minmax(0,1fr)}.app-side{display:none}.app-top .app-menu-button{display:inline-grid}.app-top{gap:8px;padding:0 10px}.app-brand{flex:1 1}.app-brand small,.app-preview-toggle,.app-top .role-switcher{display:none}.app-crumb{padding:12px 16px 0}.app-page{padding:16px}}@media (min-width:901px){.app-shell:not(.is-preview) .app-drawer,.app-shell:not(.is-preview) .app-scrim{display:none}}@media (prefers-reduced-motion:reduce){.button,.lo .btn,.lo .toggle,.lo .toggle i,.ui-btn,.ui-iconbtn,.ui-toggle,.ui-toggle i{transition:none}}@supports not (text-box-trim:trim-both){.app-nav-badge,.ui-chip b{padding-top:1px}}