:root{--bg: #f6f8fb;--surface: #ffffff;--surface-muted: #f1f5f9;--line: #d9e2ec;--line-strong: #b8c6d6;--text: #172033;--text-muted: #5f6f85;--text-soft: #8390a3;--primary: #2563eb;--primary-dark: #1d4ed8;--primary-soft: #e8f0ff;--success: #168255;--success-soft: #e8f7ef;--warning: #ad6a00;--warning-soft: #fff4db;--danger: #c33a32;--danger-soft: #fdeceb;--info: #08799c;--info-soft: #e5f7fb;--neutral: #64748b;--neutral-soft: #eef2f6;--focus: 0 0 0 3px rgba(37, 99, 235, .18);--radius: 8px;--sidebar-width: 248px;--topbar-height: 64px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Arial,Noto Sans KR,sans-serif;font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit}button:disabled{cursor:not-allowed;opacity:.68}.app-shell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar-width) 1fr;grid-template-rows:var(--topbar-height) 1fr}.topbar{grid-column:1 / -1;height:var(--topbar-height);background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:12px;font-weight:700;font-size:17px}.brand-mark{width:34px;height:34px;border-radius:8px;display:grid;place-items:center;color:#fff;background:var(--primary);font-weight:700}.topbar-actions{display:flex;align-items:center;gap:12px;color:var(--text-muted)}.token-timers{display:flex;align-items:center;gap:6px}.token-timers span{min-height:28px;display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:7px;background:var(--surface-muted);color:var(--text-muted);font-size:12px;font-weight:700;padding:4px 8px;white-space:nowrap}.sidebar{background:#152033;color:#dbe5f2;padding:18px 14px;height:calc(100vh - var(--topbar-height));overflow-y:auto;position:sticky;top:var(--topbar-height)}.menu-section{margin-bottom:20px}.menu-title{color:#8ea2bd;font-size:12px;font-weight:700;padding:10px 10px 6px}.menu-item{width:100%;border:0;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;color:#dbe5f2;background:transparent;margin-bottom:4px;cursor:pointer;text-align:left}.menu-item.active,.menu-item:hover{background:#ffffff1a;color:#fff}.main{padding:28px;min-width:0}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}.eyebrow{color:var(--text-soft);font-size:12px;font-weight:700;margin-bottom:4px}h1,h2,h3{margin:0;letter-spacing:0}h1{font-size:26px;line-height:1.25}h2{font-size:19px}.subtext{color:var(--text-muted);margin:6px 0 0}.grid{display:grid;gap:16px}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.spaced{margin-top:16px}.span-3{grid-column:1 / -1}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:0 1px 2px #1720330a}.settings-shell{display:grid;gap:16px}.tabs-bar{border-bottom:1px solid var(--line)}.tabs-bar .tabs{margin:0}.settings-stack{display:grid;gap:16px}.panel-section{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:0 1px 2px #1720330a}.card-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.metric{display:flex;flex-direction:column;gap:4px}.metric-label{color:var(--text-muted);font-size:13px}.metric-value{font-size:28px;font-weight:700}.metric-foot{color:var(--text-soft);font-size:12px}.compact-value{font-size:20px}.button-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.btn{min-height:36px;border:1px solid transparent;border-radius:7px;padding:8px 12px;background:var(--surface);color:var(--text);font-weight:700;cursor:pointer}.btn:hover{border-color:var(--line-strong)}.btn:focus,.menu-item:focus{outline:none;box-shadow:var(--focus)}.btn.primary{background:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary-dark)}.btn.secondary{border-color:var(--line)}.btn.ghost{color:var(--primary);background:var(--primary-soft)}.badge{display:inline-flex;align-items:center;min-height:24px;border-radius:999px;padding:3px 9px;font-size:12px;font-weight:700;white-space:nowrap}.badge.good,.badge.active,.badge.completed{background:var(--success-soft);color:var(--success)}.badge.attention{background:var(--warning-soft);color:var(--warning)}.badge.check{background:var(--danger-soft);color:var(--danger)}.badge.checked{background:var(--neutral-soft);color:var(--neutral)}.badge.info{background:var(--info-soft);color:var(--info)}.filter-bar{display:grid;grid-template-columns:1.6fr repeat(2,minmax(160px,1fr)) auto;gap:10px}.filter-bar.logs-filter{grid-template-columns:repeat(5,minmax(130px,1fr)) auto}.filter-bar.org-filter{grid-template-columns:1.4fr repeat(4,minmax(120px,1fr)) auto}.filter-bar.therapist-filter{align-items:end;grid-template-columns:minmax(260px,1.2fr) minmax(180px,280px) auto;margin-top:18px}.filter-bar.therapist-filter .btn{min-width:84px}.training-page,.reports-page,.contents-page{display:grid;gap:16px}.reports-page .spaced,.training-page .spaced{margin-top:0}.training-page .filter-bar{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;grid-template-columns:1.5fr repeat(4,minmax(120px,1fr)) auto;margin-bottom:16px}.training-page .card>.filter-bar:last-child{margin-bottom:0}.training-page .table-wrap{overflow-x:auto}.training-page .table-wrap table{min-width:760px}.training-page .card-header{align-items:center}.training-page .pagination-bar{justify-content:flex-end;color:var(--text-muted);padding:12px 0 0}.filter-bar.report-filter{grid-template-columns:1.4fr repeat(4,minmax(120px,1fr)) auto}.filter-bar.contents-filter{grid-template-columns:minmax(240px,1.5fr) repeat(4,minmax(130px,1fr)) auto;align-items:end;gap:12px;margin-top:18px}.filter-bar.contents-filter .btn{min-width:84px;height:40px}.contents-page .tabs-bar{margin:0}.contents-page .tab:disabled{cursor:not-allowed;opacity:.45}.contents-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0 0 16px;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius)}.contents-detail-grid>div{min-width:0;padding:14px 16px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.contents-detail-grid>div:nth-child(3n){border-right:0}.contents-detail-grid>div:nth-last-child(-n+3){border-bottom:0}.contents-detail-grid dt{margin-bottom:6px;color:var(--text-muted);font-size:12px;font-weight:700}.contents-detail-grid dd{margin:0;overflow-wrap:anywhere;font-weight:700}.contents-detail-card{display:grid;gap:18px}.contents-detail-card>.card-header{margin-bottom:0}.contents-detail-card .contents-detail-grid{margin-bottom:0}.contents-detail-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-muted)}.contents-detail-summary>div{display:grid;gap:5px;min-width:0;padding:16px 18px}.contents-detail-summary>div+div{border-left:1px solid var(--line)}.contents-detail-summary span,.contents-detail-summary small{color:var(--text-muted);font-size:12px}.contents-detail-summary strong{font-size:20px}.contents-page .contents-level-table{max-height:360px;overflow:auto}.contents-page .contents-level-table table{min-width:0}.contents-page .contents-level-table thead{position:sticky;top:0;z-index:1}.contents-status-panel{padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-muted)}.contents-status-panel h3{margin:0 0 12px;font-size:15px}.notifications-page{display:grid;gap:16px}.notifications-page .tabs-bar{margin:0}.notification-compose-grid,.notification-template-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(360px,.8fr);gap:16px;align-items:start}.notification-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.notification-full-label{display:flex;flex-direction:column;gap:6px;margin-top:12px;color:var(--text-muted);font-size:12px;font-weight:700}.notification-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin-top:14px}.notification-character-count{align-self:flex-end;color:var(--text-soft);font-size:11px}.notification-preview-card{position:sticky;top:78px}.notification-message-preview{display:grid;gap:10px;padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-muted)}.notification-message-preview>span,.notification-message-preview>small{color:var(--text-muted);font-size:12px}.notification-message-preview>strong{font-size:17px}.notification-message-preview>p{min-height:72px;margin:0;line-height:1.65;white-space:pre-wrap}.notification-checks{margin-top:14px;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius)}.notification-checks>div{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:46px;padding:10px 14px;border-bottom:1px solid var(--line)}.notification-checks>div:last-child{border-bottom:0}.notification-history-filter{grid-template-columns:minmax(260px,1.4fr) repeat(2,minmax(150px,1fr)) auto;align-items:end;margin-bottom:16px}.notification-history-filter .btn{min-width:84px}.notification-policy-note{margin-top:14px}.contents-page .form-grid{display:grid;gap:12px}.contents-page .form-grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.contents-page .full-label{display:flex;flex-direction:column;gap:6px;margin-top:12px;color:var(--text-muted);font-size:12px;font-weight:700}.contents-page .action-row{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.contents-page .inline-filter{grid-template-columns:minmax(180px,1fr) auto;align-items:end}.contents-page .note-list{margin:0;padding-left:18px;color:var(--text-muted)}.contents-page .note-list li+li{margin-top:6px}.contents-page .table-wrap table{min-width:980px}.report-preview-box{background:var(--surface-muted);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.report-preview-box+.grid,.guardian-preview-box+.grid{margin-top:16px}.report-preview-box h3,.guardian-preview-box h3{margin-top:8px}.report-preview-box p,.guardian-preview-box p{margin-bottom:0}.guardian-preview-box{background:var(--success-soft);border:1px solid #bfe8d3;border-radius:var(--radius);padding:18px}.reports-page .table-wrap{overflow-x:auto}.reports-page .table-wrap table{min-width:760px}.field{display:flex;flex-direction:column;gap:6px}.field label{color:var(--text-muted);font-size:12px;font-weight:700}input,select,textarea{width:100%;min-height:36px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--text);padding:8px 10px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:var(--focus)}textarea{min-height:92px;resize:vertical}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto}.tabs{display:flex;flex-wrap:wrap;gap:8px;border-bottom:1px solid var(--line);margin:-4px 0 16px;padding-bottom:12px}.tab{min-height:34px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--text-muted);cursor:pointer;font-weight:700;padding:7px 11px}.tab.active{background:var(--primary-soft);border-color:#b8cdfd;color:var(--primary)}.inset-card{box-shadow:none}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:middle}th{background:var(--surface-muted);color:var(--text-muted);font-size:12px;font-weight:700}tr:last-child td{border-bottom:0}.api-note,.spec-note,.alert{border-radius:var(--radius);padding:12px 14px;margin-top:14px}.api-note{background:#eef6ff;border:1px solid #c9e2ff;color:#194b7d}.api-note.compact{font-size:12px;padding:9px 10px}.spec-note{background:#f8fafc;border:1px dashed var(--line-strong);color:var(--text-muted)}.alert.warning{background:var(--warning-soft);color:var(--warning);border:1px solid #f2cf8d}.alert.success{background:var(--success-soft);color:var(--success);border:1px solid #bfe8d3}.json-preview{margin:0;max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:#0f172a;color:#e2e8f0;padding:14px;font-size:12px;line-height:1.55}.form-footer-actions{justify-content:flex-end}.progress{height:8px;background:var(--neutral-soft);border-radius:999px;overflow:hidden;min-width:88px}.progress>span{display:block;height:100%;background:var(--primary)}.mock-chart{height:180px;display:flex;align-items:end;gap:10px;padding:18px;border-radius:var(--radius);background:linear-gradient(180deg,#fff,#f3f7fb);border:1px solid var(--line)}.bar{flex:1;border-radius:6px 6px 0 0;background:var(--primary);min-height:32px}.memo-actions{margin-top:14px}.pagination-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px}.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(180deg,#f6f8fbe0,#e2e8f0f0),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180'%3E%3Cg fill='none' stroke='%23cbd5e1' stroke-width='1'%3E%3Cpath d='M0 40h180M0 90h180M0 140h180M40 0v180M90 0v180M140 0v180'/%3E%3C/g%3E%3C/svg%3E")}.login-panel{width:min(100%,420px);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 18px 48px #1720331f;padding:28px}.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:26px}.login-brand h1{font-size:24px}.login-form{display:grid;gap:14px}.form-error{border:1px solid #f0b8b4;border-radius:7px;background:var(--danger-soft);color:var(--danger);padding:10px 12px;font-weight:700}.login-submit{width:100%;min-height:42px;margin-top:4px}@media(max-width:1100px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.filter-bar,.grid.cols-4,.grid.cols-3,.grid.cols-2,.contents-detail-grid,.contents-detail-summary{grid-template-columns:1fr}.contents-detail-grid>div,.contents-detail-grid>div:nth-child(3n),.contents-detail-grid>div:nth-last-child(-n+3){border-right:0;border-bottom:1px solid var(--line)}.contents-detail-grid>div:last-child{border-bottom:0}.contents-detail-summary>div+div{border-top:1px solid var(--line);border-left:0}.notification-compose-grid,.notification-template-grid,.notification-form{grid-template-columns:1fr}.notification-preview-card{position:static}.page-header,.topbar{align-items:flex-start;flex-direction:column;height:auto}.topbar{padding:14px 18px}.topbar-actions,.token-timers,.pagination-bar{flex-wrap:wrap}}
