/* 데스크톱 앱(Electron·VS Code 계열) 느낌의 어두운 작업 화면. 색은 아래 토큰만 바꾸면 전체에 반영된다. */
:root{color-scheme:dark;
 --bg:#1f1f1f;--panel:#181818;--card:#252526;--card2:#2d2d30;--input:#2a2a2b;--hover:#ffffff12;
 --border:#3c3c3c;--line:#2e2e30;--ink:#cccccc;--strong:#ececec;--muted:#9a9a9a;
 --accent:#0078d4;--accent-hi:#4daafc;--brand:#bde77c;--green:#89d185;--orange:#d7ba7d;--red:#f48771;--purple:#c586c0;
 --radius:6px;--sidebar:224px;--titlebar:38px;--status:24px;
 --font:"Segoe UI Variable Text","Segoe UI","Malgun Gothic",system-ui,sans-serif}
*{box-sizing:border-box}
html{scrollbar-color:#4a4a4a transparent}
/* 가로 스크롤은 만들지 않는다(세로만 허용). 넓은 표는 .scroll 안에서만 움직인다 */
html{overflow-x:hidden}body{overflow-x:clip}.workspace,main,.panel,.task-grid>*,.item-grid>*,.contact-list>*,.stats>*{min-width:0}
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#4a4a4a;border-radius:10px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background-color:#5f5f5f}::-webkit-scrollbar-track{background:transparent}
body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);line-height:1.6;font-size:13px;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit}
:focus-visible{outline:1px solid var(--accent-hi);outline-offset:2px}
a{color:var(--accent-hi);text-underline-offset:3px}a[target]{overflow-wrap:anywhere}
strong{color:var(--strong)}

/* 버튼 */
button{cursor:pointer;border:1px solid transparent;border-radius:4px;padding:6px 12px;min-height:30px;font-weight:600;font-size:12.5px;transition:background .12s,border-color .12s,color .12s}
button:disabled{opacity:.5;cursor:wait}
.primary{background:var(--accent);color:#fff}.primary:hover{background:#1a86dc}.primary:active{background:#006abc}
.secondary{background:var(--card2);color:var(--ink);border-color:var(--border)}.secondary:hover{background:#37373a;color:var(--strong)}
.quiet{background:transparent;color:var(--muted)}.quiet:hover{background:var(--hover);color:var(--strong)}
.danger{color:var(--red)}.danger:hover{background:#f4877118}

/* 창 구조: 사이드바 · 제목줄 · 상태표시줄 */
.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:var(--panel);border-right:1px solid var(--line);color:var(--ink);padding:10px 8px var(--status);display:flex;flex-direction:column;overflow-y:auto}
.brand{display:flex;gap:10px;color:var(--strong);font-size:14px;font-weight:700;text-decoration:none;align-items:center;padding:6px 8px 10px}
.brand-icon{background:var(--brand);color:#1c3929;border-radius:6px;width:28px;height:28px;display:grid;place-items:center;font-size:14px;flex-shrink:0}
.brand small{font-size:11px;color:var(--muted);display:block;font-weight:400}
.nav-label{font-size:10.5px;color:var(--muted);margin:14px 10px 6px;text-transform:uppercase;letter-spacing:.8px;font-weight:600}
nav{display:grid;gap:1px;flex-shrink:0}
nav a{padding:6px 10px;border-radius:4px;color:var(--ink);text-decoration:none;font-size:13px;display:flex;gap:10px;align-items:center;border-left:2px solid transparent}
nav a:hover{background:var(--hover);color:var(--strong)}
nav a.active{background:#37373d;color:#fff;border-left-color:var(--accent-hi)}
.nav-symbol{font-size:14px;width:18px;text-align:center;color:var(--muted)}nav a.active .nav-symbol{color:var(--accent-hi)}
.sidebar-bottom{margin-top:auto;border-top:1px solid var(--line);padding:12px 10px 4px;font-size:11.5px;color:var(--muted);flex-shrink:0}
.sidebar-bottom p{font-size:11.5px;margin:8px 0}.sidebar-bottom a{color:var(--accent-hi)}
.dot{display:inline-block;width:7px;height:7px;background:var(--green);border-radius:50%;margin-right:6px;box-shadow:0 0 6px var(--green)}
.workspace{margin-left:var(--sidebar);min-height:100vh}
.topbar{position:sticky;top:0;z-index:10;height:var(--titlebar);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 8px 0 16px;background:var(--panel)}
.topbar>span{font-size:12.5px;font-weight:600;color:var(--strong);display:flex;align-items:center;gap:8px}
.topbar>span::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--accent-hi)}
.topbar>div{display:flex;gap:6px;align-items:center}
.topbar .quiet{min-height:26px;padding:2px 10px}
#save-state{font-size:11.5px;color:var(--muted)}
main{padding:14px 20px calc(var(--status) + 16px);min-height:80vh}
footer{position:fixed;left:var(--sidebar);right:0;bottom:0;height:var(--status);display:flex;align-items:center;padding:0 12px;font-size:11px;color:#fff;background:#007acc;z-index:15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 제목·공통 */
.heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--line)}
/* 제목줄에 이미 화면 이름이 있으므로 머리글은 제목+설명 한 줄로 압축 */
.heading>div:first-child{display:flex;align-items:baseline;gap:2px 12px;flex-wrap:wrap;min-width:0}.heading .eyebrow{display:none}.heading h1{margin:0}.heading .sub{margin:0}
.eyebrow{font-size:10.5px;letter-spacing:1.2px;color:var(--accent-hi);font-weight:700;margin:0 0 4px;text-transform:uppercase}
h1{font-size:19px;line-height:1.3;letter-spacing:-.4px;margin:0 0 4px;color:var(--strong);font-weight:650}
h2{font-size:14.5px;letter-spacing:-.1px;margin:0 0 10px;color:var(--strong);font-weight:650}
h3{font-size:13px;margin:0 0 4px;color:var(--strong);font-weight:600}
p{margin:5px 0}
.sub{color:var(--muted);font-size:12.5px}
.actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.small{font-size:11.5px;color:var(--muted)}
.nowrap{white-space:nowrap}
.ok{color:var(--green)}
.scroll{overflow:auto;max-width:100%}

/* 카드·패널 */
.hero{background:linear-gradient(135deg,#1d3a2a,#1e2c3a);border:1px solid #2f4b3b;border-radius:var(--radius);padding:8px 8px 8px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.hero>div{display:flex;align-items:baseline;gap:2px 12px;flex-wrap:wrap}
.hero h2{font-size:13.5px;margin:0}.hero .sub{margin:0}.hero .sub{color:#b5c9b5}.hero .primary{background:#2f7d4f}.hero .primary:hover{background:#38905c}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:9px 14px}
.stat .label{font-size:11.5px;color:var(--muted)}
.stat strong{font-size:19px;font-weight:650;display:block;letter-spacing:-.5px;margin:1px 0;font-variant-numeric:tabular-nums}
.stat small{color:var(--muted);font-size:11px}
.meter{background:#333;height:4px;border-radius:4px;overflow:hidden;margin:5px 0}.meter span{height:100%;display:block;background:var(--accent-hi)}
.cols{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:12px;align-items:start}.cols>*{min-width:0}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;margin-bottom:12px;min-width:0}
.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:4px}.panel-head h2{margin:0}.panel-head a{font-size:12px}
.task{display:flex;gap:10px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}
.task-line{display:flex;align-items:center;gap:5px;flex-wrap:wrap;min-width:0}.task-line h3{margin:0 3px 0 0}
.task-meta{font-size:11.5px;color:var(--muted);margin:1px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.task>.quiet{min-height:24px;padding:2px 8px;flex-shrink:0}
/* 일정 목록은 넓은 화면에서 여러 열로 */
.task-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(440px,100%),1fr));column-gap:28px}.task-grid .task:last-child{border-bottom:1px solid var(--line)}.task:last-child{border-bottom:0}
.task .task-text{flex:1;min-width:0}
.check{border:1px solid #5a5a5a;background:transparent;padding:0;width:18px;height:18px;min-height:18px;flex-shrink:0;display:grid;place-items:center;border-radius:3px;margin-top:0;font-size:11px;color:#fff}
.check:hover{border-color:var(--accent-hi)}
.check.done{background:var(--accent);border-color:var(--accent)}
.task.done h3{text-decoration:line-through;color:var(--muted)}
.tag{display:inline-block;font-size:10.5px;padding:1px 7px;border-radius:3px;background:#3a3d41;color:#c8c8c8;white-space:nowrap;font-weight:600;line-height:1.7}
.tag.green{background:#89d18522;color:var(--green)}.tag.orange{background:#d7ba7d22;color:var(--orange)}.tag.red{background:#f4877122;color:var(--red)}
.badge-row{display:flex;gap:5px;flex-wrap:wrap;margin:4px 0}
.empty{padding:10px 12px;text-align:center;color:var(--muted);background:#ffffff06;border:1px dashed var(--border);border-radius:var(--radius)}
.warning{padding:9px 12px;background:#d7ba7d14;border-left:2px solid var(--orange);margin:8px 0;border-radius:2px 4px 4px 2px;font-size:12px;overflow-wrap:anywhere;color:#e6d3a8}
.notice{padding:7px 12px;background:#0078d414;border:1px solid #0078d433;color:#a9c9e8;border-radius:var(--radius);font-size:12px;margin-bottom:10px}
.error-page{padding:24px;background:#f4877114;border:1px solid #f4877155;border-radius:var(--radius)}
.help-text{font-size:11px;color:var(--muted);margin:4px 0 12px}
.filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.filters input{min-width:210px;flex:1;max-width:420px}.filters select{min-width:130px;width:auto}
table{border-collapse:collapse;width:100%;font-size:12.5px}
th,td{text-align:left;vertical-align:top;padding:6px 8px;border-bottom:1px solid var(--line)}
th{color:var(--muted);font-weight:600;background:var(--panel);white-space:nowrap;font-size:11.5px;position:sticky;top:0}
tr:hover td{background:#ffffff05}
td .small{font-size:11px}
/* 표 안은 한 줄 위주로: 배지+이름 같은 줄, 작은 버튼, 문단 여백 제거 */
td p{margin:0}td>.tag{margin-right:6px}td>.tag+p{display:inline}td .badge-row{margin:2px 0 0}
td button{min-height:24px;padding:2px 8px;font-size:12px}td:last-child{white-space:nowrap}td:last-child button+button{margin-left:4px}
.item-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(340px,100%),1fr));gap:10px}
.ai-mine{display:grid;grid-template-columns:1fr;gap:14px}
.ai-mine .item h2{font-size:20px}
.ai-mine .item .price{font-size:24px}
.ai-mine .item .price small{font-size:14px}
.ai-mine .item dl{font-size:15.5px;grid-template-columns:160px 1fr;gap:5px 14px}
.ai-mine .tag{font-size:12.5px;padding:2px 8px}
.ai-mine .ai-memo{white-space:pre-wrap;overflow-wrap:anywhere;color:#d6d6d6;font-size:15.5px;line-height:1.7;margin:10px 0}
.item{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;min-width:0;overflow-wrap:anywhere;transition:border-color .12s}
.item:hover{border-color:var(--border)}.item .actions{margin-top:6px}.item .actions button{min-height:26px;padding:3px 10px}
.item h2{font-size:14.5px;margin:4px 0}
.item .price{font-size:19px;font-weight:650;letter-spacing:-.3px;margin:4px 0;color:var(--strong);font-family:"Cascadia Code",Consolas,var(--font)}
.item .price small{font-size:11.5px;color:var(--muted);font-weight:400;font-family:var(--font)}
.item dl{display:grid;grid-template-columns:110px 1fr;font-size:12px;gap:2px 8px;margin:6px 0}.item dt{color:var(--muted)}.item dd{margin:0}
.note-body{white-space:pre-wrap;overflow-wrap:anywhere;color:#bdbdbd;font-size:12.5px;max-height:180px;overflow:auto}
.ai-detail .note-body{max-height:none;font-size:15px;line-height:1.7;color:#d6d6d6}
.note-meta{font-size:11px;color:var(--muted);margin:3px 0 6px}
.contact-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:10px}
.avatar{width:32px;height:32px;background:#264f78;color:#cfe4ff;display:grid;place-items:center;border-radius:50%;font-weight:700;font-size:13px;margin-bottom:6px;width:28px;height:28px}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.export-box{padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);margin:10px 0;background:#ffffff04}
.export-box h3{font-size:13.5px}.export-box p{font-size:12px;color:var(--muted)}
.calculator{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.calc-result{font-size:13px;background:#0078d414;border:1px solid #0078d433;border-radius:var(--radius);padding:8px 12px;margin-top:8px}
.files{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.files:empty{display:none}.files a{padding:2px 8px;border:1px solid var(--border);border-radius:3px;font-size:11px;max-width:100%;overflow-wrap:anywhere;text-decoration:none}

/* 입력 */
.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.field label{font-size:11.5px;font-weight:600;color:var(--muted)}
input,select,textarea{width:100%;border:1px solid var(--border);border-radius:4px;padding:6px 9px;color:var(--strong);background:var(--input);min-height:30px}
input:hover,select:hover,textarea:hover{border-color:#505050}
input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 1px var(--accent)}
textarea{min-height:82px;resize:vertical;line-height:1.6}
.field.checkbox{flex-direction:row;align-items:center;gap:8px}.field.checkbox input{width:15px;min-height:15px;height:15px;accent-color:var(--accent)}
.time-pick{position:relative;display:flex;gap:6px;align-items:center}
.time-face{flex:1;text-align:left;background:var(--input);border:1px solid var(--border);color:var(--strong);font-variant-numeric:tabular-nums;min-width:0}
.time-face.empty{color:var(--muted);font-weight:500}
.time-pick .quiet{flex:none;border:1px solid var(--border);padding:0 8px}
.time-panel{position:absolute;z-index:6;top:calc(100% + 4px);left:0;width:268px;padding:10px;background:var(--card);border:1px solid var(--border);border-radius:8px;box-shadow:0 12px 32px #000a}
.time-panel.up{top:auto;bottom:calc(100% + 4px)}
.time-ap{display:flex;gap:4px}
.time-ap button,.time-grid button{background:var(--input);color:var(--ink);border:1px solid transparent}
.time-ap button{flex:1}
.time-ap button.on,.time-grid button.on{background:#264f78;color:#fff;border-color:#264f78}
.time-cap{margin:8px 0 4px;font-size:11px;font-weight:600;color:var(--muted)}
.time-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}
.time-grid button{min-height:32px;padding:0;font-variant-numeric:tabular-nums}
.time-grid button:hover,.time-ap button:hover{border-color:var(--border)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.full{grid-column:1/-1}

/* 편집 창 */
dialog{border:1px solid var(--border);border-radius:8px;padding:0;max-width:760px;width:calc(100% - 28px);max-height:90vh;background:var(--card);color:var(--ink);box-shadow:0 18px 60px #000a}
dialog::backdrop{background:#000000a0;backdrop-filter:blur(1px)}
#edit-form{padding:0 18px 14px}
.dialog-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:10px 0;margin-bottom:14px;position:sticky;top:0;background:var(--card);z-index:2}
.dialog-head h2{margin:0;font-size:13.5px}
.form-actions{display:flex;align-items:center;gap:8px;border-top:1px solid var(--line);padding-top:12px;margin-top:14px;position:sticky;bottom:-14px;background:var(--card);padding-bottom:12px}
.spacer{flex:1}
#form-error{color:var(--red);font-size:12.5px}
dialog.wide{max-width:96vw;width:96vw;max-height:94vh;height:94vh}
dialog.wide .rich-editor textarea{min-height:58vh}
.edit-table{table-layout:fixed}.edit-table td{padding:3px;min-width:0!important}.edit-table td:nth-child(2){width:120px}
.edit-table textarea{font-size:12px;min-height:60px;line-height:1.5;padding:6px}
.edit-table tr:first-child textarea{background:#2f3b2a;font-weight:700}
.edit-table textarea[readonly]{background:#202020;color:var(--muted)}

/* 서식 편집기 */
.rich-editor{border:1px solid var(--border);border-radius:4px;background:var(--input);overflow:hidden}
.rich-editor:focus-within{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.rich-toolbar{display:flex;gap:1px;align-items:center;padding:3px 4px;background:var(--card2);border-bottom:1px solid var(--border);flex-wrap:wrap}
.rich-toolbar button{min-height:24px;height:24px;padding:0 8px;background:transparent;color:var(--ink);font-size:12px;border-radius:3px}
.rich-toolbar button:hover{background:#ffffff1a;color:#fff}
.rich-toolbar button[data-tool="bold"]{font-weight:800}
.rich-count{font-size:10.5px;color:var(--muted);margin:0 6px;font-variant-numeric:tabular-nums}
.rich-editor textarea{border:0;border-radius:0;min-height:140px;background:transparent;box-shadow:none;line-height:1.75;padding:9px 11px}

/* 달력 */
.cal-legend{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-bottom:10px;font-size:12px;color:var(--muted)}
.cal-toggle{display:flex;align-items:center;gap:5px;cursor:pointer;color:var(--ink)}
.cal-toggle input{width:14px;height:14px;min-height:14px;margin:0}
.cal-toggle.tasks input{accent-color:#3794ff}.cal-toggle.notes input{accent-color:var(--purple)}.cal-toggle.expenses input{accent-color:var(--orange)}
.cal-key::before{content:"";display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.cal-key.late::before{background:var(--red)}.cal-key.done::before{background:var(--green)}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.cal-head{background:var(--panel);padding:6px;font-size:11px;color:var(--muted);text-align:center;font-weight:600}
.cal-head:first-child{color:var(--red)}.cal-head:last-child{color:#75beff}
.cal-day{background:var(--card);min-height:92px;padding:5px;display:flex;flex-direction:column;gap:3px;min-width:0}
.cal-day:hover{background:#29292b}
.cal-day.out{background:#1c1c1c}.cal-day.out .cal-date,.cal-day.out .cal-ev{opacity:.5}
.cal-day.today{box-shadow:inset 0 0 0 1px var(--accent)}
.cal-date{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--ink);padding:0 2px 2px;font-variant-numeric:tabular-nums}
.sun .cal-date span{color:var(--red)}.sat .cal-date span{color:#75beff}
.today .cal-date span{background:var(--accent);color:#fff;border-radius:10px;padding:0 7px;font-weight:700}
.cal-wd{display:none}
.cal-add{min-height:20px;height:20px;width:22px;padding:0;background:transparent;color:var(--muted);opacity:0;border-radius:3px;font-size:15px;line-height:1}
.cal-day:hover .cal-add,.cal-add:focus-visible{opacity:1}.cal-add:hover{background:var(--accent);color:#fff}
.cal-ev{display:block;width:100%;text-align:left;min-height:0;padding:1px 6px;font-size:11px;font-weight:500;border-radius:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:0;border-left:3px solid}
.cal-ev:hover{filter:brightness(1.25)}.cal-time{font-weight:700;margin-right:5px;font-variant-numeric:tabular-nums;opacity:.9}
.cal-ev.task{background:#0078d42e;border-color:#3794ff;color:#cfe4ff}
.cal-ev.late{background:#f487712a;border-color:var(--red);color:#ffd5cc}
.cal-ev.done{background:#89d18514;border-color:var(--green);color:#9db69b;text-decoration:line-through}
.cal-ev.note{background:#c586c02a;border-color:var(--purple);color:#f0d9ee}
.cal-ev.person{background:#4ec9b024;border-color:#4ec9b0;color:#c8f1e8}.cal-toggle.people input{accent-color:#4ec9b0}
/* 관계 묶음을 칸반처럼 나란히: 넓은 화면은 여러 열, 좁으면 자동으로 줄어듦 */
.people-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:12px;align-items:start}
.people-group{background:#ffffff05;border:1px solid var(--line);border-radius:var(--radius);padding:10px;min-width:0;display:grid;gap:8px}.people-group h2{margin:0}.people-group .help-text{margin:-4px 0 0}.people-group h2 .small{font-weight:400;margin-left:4px}
.person-head{display:flex;gap:10px;align-items:center}.person-head .avatar{margin:0;flex-shrink:0}.person-name{min-width:0}.person-name h2{margin:0}.person-name .small{margin:0}
.cal-ev.expense{background:#d7ba7d24;border-color:var(--orange);color:#f2e3bf}

/* 계획서 미리보기 편집 */
body.studio-open{overflow:hidden}
#plan-studio{position:fixed;inset:0;z-index:40;background:var(--bg);display:flex;flex-direction:column}
#plan-studio[hidden]{display:none}
.studio-bar{min-height:42px;display:flex;align-items:center;justify-content:space-between;padding:4px 10px;background:var(--panel);border-bottom:1px solid var(--line);gap:10px}
.studio-title{display:flex;gap:10px;align-items:center;min-width:0;white-space:nowrap;overflow:hidden}
.studio-title strong{overflow:hidden;text-overflow:ellipsis;font-size:13px}
.studio-bar button{min-height:28px;padding:3px 10px}
.button-link{display:inline-flex;align-items:center;min-height:28px;padding:3px 10px;border:1px solid var(--border);border-radius:4px;color:var(--ink);text-decoration:none;font-size:12.5px;font-weight:600;background:var(--card2)}
.button-link:hover{background:#37373a;color:var(--strong)}
.studio-body{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 300px;min-height:0}
.studio-paper{overflow:auto;padding:28px 20px;background:#2b2b2b}
.studio-side{background:var(--panel);border-left:1px solid var(--line);padding:14px 16px;overflow:auto;font-size:12px;color:var(--muted)}
.studio-side h3{margin-top:14px;font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--ink)}
.studio-side textarea{min-height:160px}
#studio-error{color:var(--red)}#studio-fit{text-align:center;margin:10px 0 0}
.fit-ok{color:var(--green)!important}.fit-over{color:var(--orange)!important}
/* 종이는 인쇄본(server.py plan_html)과 같은 크기·글꼴로 맞춘다 */
.plan-paper{background:#fff;color:#172638;width:210mm;max-width:100%;margin:0 auto;padding:12mm;font-family:"Malgun Gothic",system-ui,sans-serif;font-size:8.5pt;line-height:1.6;box-shadow:0 10px 40px #000a;min-height:297mm;
 background-image:linear-gradient(to bottom,transparent calc(var(--page-line,99999px) - 1px),#e05252 calc(var(--page-line,99999px) - 1px),#e05252 var(--page-line,99999px),transparent var(--page-line,99999px))}
.plan-paper strong,.plan-paper b{color:inherit}
.plan-paper .h1{font-size:22pt;letter-spacing:-1pt;margin:4px 0 7px;font-weight:700;line-height:1.3}
.plan-paper .h2{font-size:10.5pt;margin:10px 0 5px;font-weight:700}
.plan-paper .meta{font-size:7.5pt;color:#617182;margin:4px 0}
.plan-paper .lead{background:#e9f2df;padding:10px;margin:12px 0;font-weight:600}
.plan-paper .p{margin:4px 0}
.plan-paper section{break-inside:avoid}
.plan-paper table{border-collapse:collapse;width:100%;font-size:7.8pt}
.plan-paper td,.plan-paper th{border-bottom:1px solid #dce3e9;padding:5px 7px;text-align:left;vertical-align:top;background:none;color:#172638;white-space:normal;font-size:7.8pt;position:static}
.plan-paper th{background:#e9f2df;font-weight:700}
.plan-paper tr:hover td{background:none}
.plan-paper td:nth-child(2){white-space:nowrap}
.plan-paper .auto{background:#eef1f4;color:#60758a;cursor:help}
.plan-paper .foot{font-size:7pt;color:#617182;margin-top:10px}
.plan-paper .sign{border-top:1px solid #ddd;padding-top:8px;font-size:7.5pt;margin-top:10px}
.plan-paper [contenteditable]{outline:none;border-radius:2px;min-height:1.3em;overflow-wrap:anywhere;cursor:text;transition:box-shadow .1s}
.plan-paper [contenteditable]:hover{box-shadow:0 0 0 1px #9cc3ff}
.plan-paper [contenteditable]:focus{box-shadow:0 0 0 2px var(--accent);background:#f5f9ff}

/* 영수증 대조: 입력창 왼쪽에 원본을 띄운다 */
dialog.with-preview{max-width:min(1400px,96vw);width:96vw}
dialog.with-preview[open]{display:grid;grid-template-columns:minmax(280px,42%) minmax(0,1fr)}
dialog.with-preview #edit-form{grid-column:2;grid-row:1;overflow:auto;max-height:90vh}
#receipt-preview{grid-column:1;grid-row:1;background:#151515;border-right:1px solid var(--line);padding:12px;overflow:auto;max-height:90vh;display:flex;flex-direction:column;gap:8px}
.preview-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
#receipt-preview img{width:100%;height:auto;background:#fff;border-radius:4px;cursor:zoom-in}#receipt-preview img.zoom{width:180%;max-width:none;cursor:zoom-out}
#receipt-preview pre{white-space:pre-wrap;font-size:11.5px;color:var(--muted);background:var(--card);padding:8px;border-radius:4px;margin:6px 0 0}
#expense-check{gap:4px;margin-top:-4px}.check-line{font-size:12px;padding:5px 9px;border-radius:3px;border-left:3px solid}
.check-line.red{background:#f4877118;border-color:var(--red);color:#ffd5cc}.check-line.orange{background:#d7ba7d14;border-color:var(--orange);color:#e6d3a8}.check-line.ok{background:#89d18512;border-color:var(--green);color:var(--green)}
.cat-detail{border:1px solid var(--line);border-radius:var(--radius);padding:6px 10px;margin-bottom:8px;background:#ffffff04}
.cat-detail summary{cursor:pointer;display:flex;gap:10px;align-items:baseline;padding:4px 0}.cat-detail table{margin:6px 0}
.link-chip{display:inline-block;margin:2px 4px 2px 0;min-height:22px;padding:1px 8px;background:var(--card2);border:1px solid var(--border);color:var(--ink);font-weight:500;font-size:11.5px}.link-chip:hover{border-color:var(--accent-hi);color:#fff}
@media(max-width:720px){dialog.with-preview[open]{display:block}#receipt-preview{max-height:40vh;border-right:0;border-bottom:1px solid var(--line)}}
/* AI 솔루션 비교·선택표 */
.pick-summary{display:flex;gap:24px;align-items:flex-end;flex-wrap:wrap;margin:2px 0 4px}.pick-summary>div{display:flex;flex-direction:column}.pick-summary strong{font-size:19px;color:var(--strong);font-variant-numeric:tabular-nums}.pick-summary strong.over{color:var(--red)}.pick-summary .cal-toggle{margin-left:auto}
.pick-table tr.picked td{background:#0078d414}.pick{display:flex;align-items:center;gap:8px;cursor:pointer}.pick input{width:16px;height:16px;min-height:16px;accent-color:var(--accent);margin:0}
.pick-months{width:64px;min-height:26px;padding:2px 6px}
/* 증빙 첨부 칸 */
.pending-box{border:1px dashed var(--border);border-radius:var(--radius);padding:8px 10px}.pending-list{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 6px}
.file-chip{display:inline-flex;align-items:center;gap:4px;background:var(--card2);border:1px solid var(--border);border-radius:3px;padding:1px 2px 1px 8px;font-size:11.5px}.file-chip.saved{color:var(--green);padding-right:8px}.file-chip button{min-height:20px;padding:0 6px}
#pending-input{min-height:0;padding:4px;font-size:12px}
body.dropping main{outline:2px dashed var(--accent-hi);outline-offset:-8px;background:#0078d40d}
#toast{position:fixed;bottom:calc(var(--status) + 14px);right:16px;padding:10px 16px;border-radius:4px;color:var(--strong);background:#252526;border:1px solid var(--border);border-left:3px solid var(--accent-hi);display:none;z-index:60;max-width:min(420px,90%);box-shadow:0 8px 30px #0009;font-size:12.5px}
#toast.show{display:block}
.skip{position:fixed;left:240px;top:-80px;background:var(--card);color:var(--strong);padding:10px;z-index:70}.skip:focus{top:8px}

@media(max-width:1100px){
 :root{--sidebar:196px}
 main{padding:18px 18px calc(var(--status) + 24px)}
 .cols{grid-template-columns:1fr}
 .stat strong{font-size:19px}
 .studio-body{grid-template-columns:minmax(0,1fr) 240px}
}
@media(max-width:720px){
 .sidebar{position:static;width:100%;padding:8px 10px 6px;border-right:0;border-bottom:1px solid var(--line)}
 .nav-label,.sidebar-bottom{display:none}
 nav{display:flex;overflow-x:auto;gap:2px;margin-top:4px;padding-bottom:4px}
 nav a{white-space:nowrap;padding:5px 9px;font-size:12px;border-left:0;border-bottom:2px solid transparent;border-radius:3px 3px 0 0}
 nav a.active{border-bottom-color:var(--accent-hi)}
 .nav-symbol{display:none}
 .workspace{margin:0}
 .topbar{padding:0 6px 0 12px}
 main{padding:16px 14px 24px}
 footer{position:static;white-space:normal;height:auto;padding:6px 12px;font-size:10px}
 .heading{align-items:flex-start;flex-wrap:wrap}
 h1{font-size:19px}
 .hero{align-items:flex-start;flex-direction:column}
 .stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .item-grid,.contact-list{grid-template-columns:1fr}
 .calculator{grid-template-columns:1fr 1fr}
 .form-grid{grid-template-columns:1fr}.full{grid-column:auto}
 td,th{min-width:90px}td:first-child{min-width:170px}
 .filters input{max-width:none;min-width:100%}
 .skip{left:12px}
 #toast{left:12px;right:12px;bottom:14px;max-width:none}
 /* 달력은 일정이 있는 날만 목록으로 */
 .cal-grid{grid-template-columns:1fr}
 .cal-head{display:none}
 .cal-day{min-height:0;padding:8px}
 .cal-day.out,.cal-day.no-events:not(.today){display:none}
 .cal-wd{display:inline}.cal-add{opacity:1}
 .cal-ev{white-space:normal}
 /* 계획서 편집 */
 .studio-bar{flex-wrap:wrap}
 .studio-body{grid-template-columns:1fr;overflow:auto}
 .studio-paper{padding:10px;overflow:visible}
 .plan-paper{padding:5mm;min-height:0}
 .studio-side{border-left:0;border-top:1px solid var(--line)}
}
@media print{
 :root{color-scheme:light}
 body{background:#fff;color:#111}
 .sidebar,.topbar,.actions,footer,button,.filters{display:none}
 .workspace{margin:0}main{padding:0}
 .panel,.item,.stat{background:#fff;color:#111;border-color:#ccc;break-inside:avoid}
 h1,h2,h3,strong{color:#111}
 .stats{grid-template-columns:repeat(4,1fr)}
}

/* 멘토 질문은 긴 문장도 화면 폭에 맞춰 읽을 수 있도록 표시한다. */
.mentor-questions{margin-top:18px}.mentor-question-list{padding-left:28px;margin:12px 0 0}.mentor-question-list li{padding:12px 8px;line-height:1.75;overflow-wrap:anywhere;border-bottom:1px solid var(--border,#383838)}.mentor-question-list li:last-child{border-bottom:0}.mentor-question-list li::marker{color:#4dabf7;font-weight:700}

/* 오늘 대시보드: 가까운 일정과 행동을 먼저, 누적 현황은 아래에 표시한다. */
.dashboard{max-width:1600px;margin:0 auto}.dashboard .heading{padding:5px 0 16px;margin-bottom:18px}.dashboard .heading h1{font-size:25px;letter-spacing:-1px}.dashboard .heading>div:first-child{display:block}.dashboard .heading .sub{margin-top:5px}
.dash-overview{display:grid;grid-template-columns:1.15fr 1fr;gap:16px;margin-bottom:24px}.dash-focus{background:linear-gradient(115deg,#233849,#202a35);border:1px solid #39536b;border-left:4px solid #63b3ff;border-radius:12px;padding:20px 24px;min-width:0}.dash-kicker{color:#90caff;font-size:12px;font-weight:700;letter-spacing:.6px}.dash-focus-title{display:flex;gap:12px;align-items:center;margin:10px 0 6px}.dash-focus-title h2{font-size:22px;line-height:1.4;margin:0;overflow-wrap:anywhere}.dash-focus-title .tag{font-size:13px;flex-shrink:0}.dash-focus>p{color:#c0ceda;font-size:13px}.dash-focus .dash-focus-memo{color:#9aafc1;font-size:12px;overflow-wrap:anywhere}.dash-focus .actions{margin-top:16px;gap:16px}.dash-focus .actions a{font-size:12px}.dash-focus .actions button{background:#385269;color:#e1f1ff}
.dash-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.dash-count{display:flex;flex-direction:column;justify-content:center;gap:10px;text-decoration:none;background:#28292d;border:1px solid #3a3e45;border-radius:12px;padding:18px;color:#cbd1da;min-width:0}.dash-count strong{font-size:42px;line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-2px}.dash-count strong small{font-size:13px;font-weight:400;margin-left:5px;letter-spacing:0}.dash-count.red strong{color:#f5a190}.dash-count.orange strong{color:#f3cd87}.dash-count.blue strong{color:#87c5ff}.dash-count:hover{border-color:#6c8298;background:#2b3038}
.dash-section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.dash-section-title h2{margin:0;font-size:14px}.dash-stat-link{color:inherit;text-decoration:none;min-width:0}.dash-stats{gap:12px;margin-bottom:22px}.dash-stats .stat{height:100%;padding:16px;border-radius:10px;border-top:2px solid #7485a6}.dash-stats .stat strong{font-size:24px;margin:8px 0}.dash-stats .meter{margin:10px 0 8px;height:5px}.dash-stat-link:nth-child(2) .stat{border-top-color:#89d185}.dash-stat-link:nth-child(2) .meter span{background:#89d185}.dash-stat-link:nth-child(3) .stat{border-top-color:#c586c0}.dash-stat-link:nth-child(3) .meter span{background:#c586c0}.dash-stat-link:nth-child(4) .stat{border-top-color:#d7ba7d}.dash-stat-link:hover .stat{background:#2b2e34;border-color:#657890}
.dash-columns{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:16px}.dashboard .panel{border-radius:10px;padding:16px 18px;margin-bottom:16px}.dashboard .panel-head{margin-bottom:10px}.dashboard .task{padding:12px 0}.dashboard .task-line h3{font-size:14px}.dashboard .task-meta{margin-top:5px}.dash-diary{display:flex;align-items:center;justify-content:space-between;gap:14px;background:#23332d;border:1px solid #3a5145;border-radius:10px;padding:16px 18px;margin-bottom:16px}.dash-diary h2{margin:0 0 4px}.dash-diary button{flex-shrink:0}.dash-alert-link{display:flex;justify-content:space-between;gap:12px;padding:12px 0;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line)}.dash-alert-link:last-child{border-bottom:0}.dash-alert-link:hover{color:var(--accent-hi)}.dash-shortcuts{display:flex;gap:8px;flex-wrap:wrap}.dash-shortcuts a{padding:8px 12px;background:var(--card);border:1px solid var(--line);border-radius:6px;font-size:12px;text-decoration:none}
@media(max-width:1100px){.dash-overview{grid-template-columns:1fr}.dash-count{padding:14px;gap:6px}.dash-count strong{font-size:32px}.dash-counts{gap:10px}.dash-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-columns{grid-template-columns:1fr}}
@media(max-width:600px){.dashboard .heading{align-items:flex-start}.dashboard .heading h1{font-size:21px}.dash-focus{padding:16px}.dash-focus-title h2{font-size:18px}.dash-count{padding:12px 10px}.dash-count>span{font-size:11px}.dash-count strong{font-size:30px}.dash-stats .stat{padding:12px}.dash-stats .stat strong{font-size:19px}.dash-diary{align-items:flex-start;flex-direction:column}.dashboard .task-meta{white-space:normal}.dash-focus-title{align-items:flex-start}.dashboard .panel{padding:14px}}

/* 지출 현황은 쉬운 금액 설명과 비목별 상세 내역을 한곳에 모은다. */
.ledger-page{max-width:1600px;margin:auto}.ledger-page .heading>div:first-child{display:block}.ledger-page .heading h1{font-size:23px}.ledger-page .heading .sub{margin-top:6px}.ledger-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:16px 0}.ledger-toolbar .filters{margin:0}.ledger-toolbar a{font-size:12px}.ledger-stats .stat{padding:16px;border-radius:10px}.ledger-stats .stat:first-child{background:#223549;border-color:#3c6689}.ledger-stats .stat strong{font-size:26px;margin:8px 0}.ledger-guidance{background:#ffffff05;border:1px solid var(--line);border-radius:8px;padding:12px 16px;margin:16px 0;color:var(--muted);font-size:12px}.ledger-guidance p{margin-bottom:0}.ledger-start{background:#22332c;border:1px solid #395346;border-radius:10px;padding:16px;margin-bottom:14px}.ledger-start h2{margin-bottom:4px}.ledger-review{display:flex;gap:12px 24px;flex-wrap:wrap;align-items:center;padding:12px 16px;background:var(--card);border-radius:8px;margin-bottom:20px;font-size:12px}.ledger-review a{margin-left:auto}.ledger-warning-list{margin-bottom:16px}.ledger-category{border:1px solid var(--border);border-radius:10px;background:var(--card);margin-bottom:10px;overflow:hidden}.ledger-category>summary{display:flex;align-items:center;gap:20px;padding:16px 18px;cursor:pointer;list-style:none}.ledger-category>summary::-webkit-details-marker{display:none}.ledger-category>summary:before{content:'›';font-size:22px;color:var(--accent-hi)}.ledger-category[open]>summary:before{content:'⌄'}.ledger-category>summary:hover{background:var(--hover)}.ledger-category-title{flex:1;min-width:0}.ledger-category-title strong{font-size:15px;display:block}.ledger-category-title .small{display:block;margin-top:3px}.ledger-category-amount{text-align:right;min-width:120px}.ledger-category-amount strong{font-size:20px;display:block}.ledger-category-amount .small{display:block}.ledger-budget{display:grid;min-width:190px;font-size:12px;gap:3px}.ledger-expand{font-size:11px;color:var(--accent-hi)}.ledger-category-body{border-top:1px solid var(--line);padding:16px 20px;background:#00000010}.ledger-budget-line{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted)}.ledger-item{margin-top:16px;border:1px solid var(--line);border-radius:8px;padding:12px 14px;background:#ffffff03}.ledger-item-head{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding-bottom:8px}.ledger-item-head h3{margin:0}.ledger-item-head small{font-weight:400;color:var(--muted)}.ledger-transaction{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.ledger-transaction:last-child{border-bottom:0;padding-bottom:0}.ledger-transaction>div{min-width:0}.ledger-transaction-money{text-align:right;flex-shrink:0}.ledger-transaction-money button{margin-top:5px}.ledger-no-record{padding:18px 0;color:var(--muted);font-size:12px}.ledger-examples{margin:16px 0}.ledger-examples>summary{color:var(--accent-hi);cursor:pointer;font-size:12px}.ledger-example-list{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.ledger-example-list button{font-size:12px;white-space:normal;text-align:left}.ledger-unassigned{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:12px;padding:12px 16px;margin:12px 0 20px;background:#ffffff05;border-radius:8px}.ledger-page table td:last-child,.ledger-page table th:last-child{text-align:right;font-variant-numeric:tabular-nums}
@media(max-width:1000px){.ledger-category>summary{flex-wrap:wrap;gap:10px 16px}.ledger-category-title{flex-basis:50%}.ledger-budget{margin-left:30px;min-width:0}.ledger-expand{margin-left:auto}.ledger-page .cols{grid-template-columns:1fr}}
@media(max-width:600px){.ledger-page .heading{align-items:flex-start;flex-direction:column}.ledger-toolbar{align-items:flex-start;flex-direction:column}.ledger-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.ledger-stats .stat{padding:12px}.ledger-stats .stat strong{font-size:21px}.ledger-category>summary{padding:12px;gap:8px}.ledger-category-title{flex-basis:calc(100% - 30px)}.ledger-category-amount{text-align:left;margin-left:24px;min-width:100px}.ledger-budget{margin-left:0;flex:1}.ledger-expand{display:none}.ledger-category-body{padding:12px}.ledger-transaction{flex-direction:column;gap:6px}.ledger-transaction-money{text-align:left}.ledger-review a{margin-left:0}.ledger-item-head{flex-wrap:wrap}}

/* 증빙 표와 별도 미리보기: 수정 없이 원본을 확인한다. */
.expense-table{min-width:1100px}.expense-table th{white-space:nowrap}.expense-table td{padding:12px 10px}.expense-table td:nth-child(2){min-width:190px;max-width:320px;overflow-wrap:anywhere}.expense-number{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.expense-table th:nth-child(3),.expense-table th:nth-child(4),.expense-table th:nth-child(5){text-align:right}.expense-attachments{display:flex;flex-wrap:wrap;gap:8px;min-width:150px;max-width:250px;margin-bottom:8px}.receipt-thumb{background:#ffffff06;border:1px solid var(--border);color:var(--ink);padding:5px;width:100px;display:grid;gap:4px;text-align:left}.receipt-thumb:hover{border-color:var(--accent-hi)}.receipt-thumb img{width:88px;height:64px;object-fit:contain;background:#161616}.receipt-thumb>span:last-child{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:88px}.receipt-pdf{display:grid;place-items:center;height:64px;background:#3c2929;color:#f1afa3;font-weight:700}.expense-table-empty{padding:28px!important;text-align:center;color:var(--muted)}
#saved-receipt-dialog{width:min(1100px,95vw);max-width:95vw;height:min(880px,92vh);max-height:92vh;padding:0;overflow:hidden;border:1px solid var(--border);border-radius:12px;background:var(--panel);color:var(--ink)}#saved-receipt-dialog[open]{display:flex;flex-direction:column}#saved-receipt-dialog::backdrop{background:#000a}.saved-receipt-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;gap:12px;border-bottom:1px solid var(--line)}.saved-receipt-head h2{margin:0}.saved-receipt-head p{overflow-wrap:anywhere}.saved-receipt-tabs{display:flex;gap:8px;overflow:auto;padding:10px 18px;flex-shrink:0}.saved-receipt-tabs button{flex-shrink:0;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.saved-receipt-body{flex:1;min-height:0;overflow:auto;text-align:center;background:#111;padding:12px}.saved-receipt-body img{max-width:100%;height:auto}.saved-receipt-body iframe{width:100%;height:100%;min-height:250px;border:0;background:white}.saved-receipt-foot{padding:12px 18px;display:flex;gap:12px;flex-wrap:wrap;align-items:center;flex-shrink:0;font-size:12px}.saved-receipt-foot .small{flex:1;min-width:180px}
/* 활동보고서 편집은 문항별 근거와 보완 상태를 함께 읽을 수 있게 구성한다. */
.activity-record-guide{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.activity-record-guide>div{padding:16px;background:#ffffff05;border-radius:8px}.activity-record-guide p{color:var(--muted);font-size:12px}.activity-question{margin:20px 0}.activity-question h3{font-size:15px;line-height:1.6}.activity-question textarea{width:100%;min-height:260px;line-height:1.8;resize:vertical;padding:14px;font-size:13px}.activity-save-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;position:sticky;bottom:30px;padding:12px;background:var(--panel);border:1px solid var(--border);border-radius:8px}.activity-save-bar span{color:var(--muted);font-size:12px}.activity-sources{margin-top:16px}.activity-sources>summary{cursor:pointer;color:var(--accent-hi)}.activity-sources h3{margin-top:16px}#activity-checks li{margin:7px 0;line-height:1.6}#activity-draft{width:100%;margin-top:6px}
@media(max-width:700px){.activity-record-guide{grid-template-columns:1fr}.activity-question textarea{min-height:300px}}
/* 회의록·매일 기록 표 */
.note-table{min-width:1000px}.note-table td{padding:10px}.note-table td>.small,.note-table td>span.small{display:block;margin-top:2px}
.note-when{white-space:nowrap;width:96px}.note-when strong{font-variant-numeric:tabular-nums}
.note-tags{display:flex;flex-wrap:wrap;gap:4px;min-width:90px;max-width:130px}
.note-title{min-width:160px;max-width:240px;overflow-wrap:anywhere}.note-title strong{display:block}
.note-content{min-width:260px;max-width:420px}.note-content summary{cursor:pointer;list-style:none;display:flex;flex-direction:column;gap:3px}.note-content summary::-webkit-details-marker{display:none}
.note-preview{color:#bdbdbd;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.note-more{font-size:11px;color:var(--accent-hi)}.note-content details[open] .note-preview{display:none}.note-content details[open] .note-more:after{content:' 접기'}.note-content details[open] .note-more{font-size:0}.note-content details[open] .note-more:after{font-size:11px}
.note-content h3{font-size:11.5px;color:var(--muted);margin:8px 0 2px}
.note-action{min-width:140px;max-width:220px;overflow-wrap:anywhere;color:#bdbdbd}
.note-table .files{margin:0;max-width:160px}

/* 설정 */
.settings-form{max-width:980px}.settings-form .panel{padding:16px 18px}.settings-form .panel-head{margin-bottom:2px}
.settings-form .help-text{margin:0 0 12px}
.settings-hint{display:block;margin-top:4px;font-size:11px;color:var(--muted)}
.settings-money{display:flex;align-items:center;gap:6px}.settings-money input{flex:1;min-width:0;text-align:right;font-variant-numeric:tabular-nums}.settings-money span{color:var(--muted);font-size:12px}
.settings-actions{display:flex;justify-content:flex-end;gap:8px;margin:4px 0 24px}
.settings-error{color:var(--red);min-height:1em;margin:0 0 6px}.settings-error:empty{display:none}

/* AI 솔루션·사용량 */
.ai-stats{margin-bottom:12px}
.ai-tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:4px 0 12px;overflow-x:auto}
.ai-tab{background:none;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--muted);padding:8px 14px;min-height:36px;font-size:13px;white-space:nowrap;display:flex;align-items:center;gap:6px;transition:color .12s,border-color .12s}
.ai-tab:hover{color:var(--ink);background:none}.ai-tab.active{color:var(--strong);border-bottom-color:var(--accent);font-weight:600}
.ai-tab span{font-size:11px;background:#ffffff10;border-radius:9px;padding:0 7px;line-height:17px;color:var(--muted)}
.ai-toolbar{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap;margin:2px 0 8px}.ai-toolbar .small{margin-left:auto}
.ai-toolbar #ai-search{flex:1 1 220px;max-width:320px}.ai-toolbar select{width:auto;min-width:140px}
.ai-cat{display:inline-block;font-size:10.5px;color:var(--muted);border:1px solid var(--border);border-radius:3px;padding:0 5px;margin-right:6px;line-height:16px}
.pick-table{min-width:900px}.pick-table td{vertical-align:middle;padding:8px}.pick-table .num,.ai-usage-table .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.ai-pick-cell{width:28px}.ai-pick-cell input{width:16px;height:16px;min-height:16px;accent-color:var(--accent);margin:0}
.ai-name{min-width:220px;max-width:340px}
.ai-name-btn{background:none;border:0;padding:0;min-height:0;color:var(--ink);display:flex;align-items:center;gap:6px;text-align:left;font-size:13px}
.ai-name-btn:hover{background:none;color:var(--accent-hi)}.ai-caret{color:var(--muted);font-size:11px;width:10px}
.ai-note{margin:2px 0 0 16px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}
.pick-table .small{line-height:1.45}
.ai-detail-row td{background:#00000018!important;padding:4px 8px 14px}
.ai-detail{max-width:760px}.ai-detail dl{display:grid;grid-template-columns:110px 1fr;font-size:12px;gap:3px 10px;margin:4px 0 8px}.ai-detail dt{color:var(--muted)}.ai-detail dd{margin:0}
.ai-guide{margin-top:10px}.ai-guide summary{cursor:pointer;color:var(--accent-hi);font-size:12px}.ai-guide p{margin:6px 0 0}
.ai-usage-table{min-width:900px}.ai-result{min-width:200px;max-width:360px;overflow-wrap:anywhere}
/* 표 머리글 정렬 버튼 */
.th-sort{background:none;border:0;padding:0;min-height:0;color:inherit;font:inherit;font-weight:600;display:inline-flex;align-items:center;gap:4px;cursor:pointer;white-space:nowrap}
.th-sort:hover{background:none;color:var(--ink)}.th-sort.active{color:var(--accent-hi)}
.th-sort .sort-mark{font-size:9px;opacity:.45}.th-sort.active .sort-mark,.th-sort:hover .sort-mark{opacity:1}
th.num .th-sort{flex-direction:row}th.num{text-align:right}

/* AI 연동 설정·명함 */
.settings-key{display:flex;gap:6px;align-items:center}.settings-key input{flex:1;min-width:0;font-family:"Cascadia Code",Consolas,monospace}
#ai-test-result.ok{color:var(--green,#89d185)}#ai-test-result.danger{color:var(--red)}
.card-box .card-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:6px}

/* 카드·지출 관리 */
.spend-stats{margin-bottom:12px}
.stat-link{text-align:left;font:inherit;color:inherit;cursor:pointer;display:block;width:100%;min-height:0;transition:border-color .12s}
.stat-link:hover{border-color:var(--accent-hi);background:var(--card)}.stat-link.warn strong{color:var(--orange,#f0a35c)}
.spend-bar{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:4px 0 12px}
.spend-bar .ai-tabs{border-bottom:0;margin:0}
.spend-period{display:flex;align-items:center;gap:8px;padding-bottom:6px;font-size:12px}.spend-period select{width:auto;min-width:130px}
.spend-table{min-width:860px}.spend-table td{vertical-align:middle;padding:10px 8px}.spend-table .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.spend-table summary{cursor:pointer;display:flex;flex-direction:column;gap:2px}.spend-table summary::marker{color:var(--muted)}
.spend-table details[open] summary{margin-bottom:8px}
.spend-gauge{min-width:180px}.spend-gauge .meter{margin:0 0 4px}
.spend-table tfoot td{border-top:1px solid var(--border);border-bottom:0;background:#ffffff04}
.spend-detail{border-left:2px solid var(--line);padding-left:12px;margin-top:4px}
.spend-item{margin-bottom:10px}.spend-item-head{display:flex;justify-content:space-between;gap:12px;font-size:12.5px;margin-bottom:4px}
.spend-examples{margin-top:8px;line-height:2}
tr.picked td{background:#0078d414}
.settings-advanced{padding:10px 12px;border:1px dashed var(--border);border-radius:8px}.settings-advanced summary{cursor:pointer;color:var(--accent-hi);font-size:13px}.settings-advanced input{width:100%;margin-top:8px}.field input[hidden]{display:none}#set-ai_model{margin-top:6px}

/* 결과물 버튼은 제목 오른쪽 끝에 같은 묶음으로 표시한다. */
.heading>.actions{margin-left:auto;justify-content:flex-end}.output-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap;border-left:1px solid var(--line);padding-left:10px}.output-actions select{max-width:220px}.output-actions button{white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
@media(max-width:700px){.heading>.actions{width:100%}.output-actions{border-left:0;padding-left:0;max-width:100%}.output-actions select{max-width:100%}}

/* 개발 프로젝트 카드: CHANGELOG 최근 업데이트 타임라인 */
.item.wide{grid-column:1/-1}.item details>summary{cursor:pointer;color:var(--accent-hi);font-size:12px;margin:8px 0 4px}
.changes{list-style:none;margin:6px 0 4px;padding:0 0 0 14px;border-left:2px solid var(--line)}
.change{position:relative;padding:0 0 14px 4px}.change:last-child{padding-bottom:4px}
.change::before{content:"";position:absolute;left:-21px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--card);border:2px solid var(--accent-hi)}
.changes:first-of-type .change:first-child::before{background:var(--accent-hi)}
.change-head{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;margin-bottom:4px}
.change-head time{font:600 11.5px "Cascadia Code",Consolas,var(--font);color:var(--accent-hi);white-space:nowrap}.change-head b{font-size:13.5px;color:var(--strong)}
.change ul{margin:0;padding-left:18px;font-size:12.5px;line-height:1.65;color:var(--ink)}.change li+li{margin-top:3px}.change li::marker{color:var(--muted)}
.change strong{color:var(--strong)}.change code{font:11.5px "Cascadia Code",Consolas,monospace;background:#ffffff0d;padding:0 4px;border-radius:3px}
.cal-ev.dev{background:#4daafc1f;border-color:var(--accent-hi);color:#d4e9ff;text-decoration:none}.cal-ev.dev:hover{background:#4daafc33}.cal-toggle.dev input{accent-color:var(--accent-hi)}

/* 지원 안내·양식 화면과 보고서 문항별 양식 가이드 */
.guide-section{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:0 14px;margin-bottom:10px}
.guide-section>summary{cursor:pointer;display:flex;align-items:baseline;gap:10px;padding:11px 0;font-weight:650;color:var(--strong);font-size:14px}
.guide-section>summary small{font-weight:400;color:var(--muted);font-size:11.5px}.guide-section[open]>summary{border-bottom:1px solid var(--line);margin-bottom:10px}
.guide-section .scroll{margin:0 0 10px}.guide-section td{vertical-align:top;line-height:1.55}
.guide-list{margin:4px 0 12px;padding-left:20px;font-size:12.5px;line-height:1.7}.guide-list li+li{margin-top:2px}
.form-guide{margin:4px 0 8px;font-size:12.5px;background:#ffffff06;border:1px solid var(--line);border-radius:6px;padding:6px 12px}
.form-guide>summary{cursor:pointer;color:var(--accent-hi);font-size:12px}.form-guide ol{margin:6px 0;padding-left:20px;line-height:1.7}
.form-guide dl{display:grid;grid-template-columns:150px 1fr;gap:4px 10px;margin:6px 0 4px}.form-guide dt{color:var(--strong);font-weight:600}.form-guide dd{margin:0;color:var(--ink)}
@media(max-width:600px){.form-guide dl{grid-template-columns:1fr}.form-guide dd{margin-bottom:6px}}
/* 지출 입력창·안내 화면의 '이 건에 필요한 증빙' 목록 */
.evidence-guide{margin-top:6px;padding:8px 12px;border:1px solid var(--line);border-left:3px solid var(--accent-hi);border-radius:3px;background:#4daafc0d;font-size:12.5px}
.evidence-head{display:flex;justify-content:space-between;gap:10px;align-items:baseline;margin-bottom:4px}.evidence-head strong{color:var(--strong)}
.evidence-guide ol,.evidence-guide ul{margin:4px 0;padding-left:20px;line-height:1.6}.evidence-guide li+li{margin-top:3px}.evidence-guide li strong{color:var(--strong)}
.evidence-fill{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line)}.evidence-fill>strong{color:var(--orange);font-size:12px}
.evidence-case{margin:0 0 12px}.evidence-case h3{font-size:13px;margin:0 0 2px}


/* 첨부 칩: 한 줄 높이로 촘촘하게, 4개 넘으면 접기 */
.file-chips{display:flex;flex-wrap:wrap;gap:4px;max-width:300px;margin-bottom:6px}
.file-chip-btn{display:inline-flex;align-items:center;gap:6px;max-width:145px;height:28px;padding:2px 8px 2px 3px;border:1px solid var(--border);border-radius:6px;background:#ffffff08;color:var(--ink);font-size:11px;line-height:1;text-decoration:none;cursor:pointer;transition:border-color .15s,background .15s}
.file-chip-btn:hover{border-color:var(--accent-hi);background:#ffffff12}
.file-chip-btn:focus-visible{outline:2px solid var(--accent-hi);outline-offset:1px}
.chip-ico{flex:none;display:grid;place-items:center;width:22px;height:22px;border-radius:4px;object-fit:cover;background:#2a2a2a;color:var(--muted);font-size:8px;font-weight:700}
.chip-ico.pdf{background:#3c2929;color:#f1afa3}
.chip-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.file-more{flex-basis:100%}.file-more summary{cursor:pointer;font-size:11px;color:var(--accent-hi);padding:2px 0;list-style:none}.file-more summary::-webkit-details-marker{display:none}.file-more[open] summary{margin-bottom:4px}
.expense-table td:first-child{white-space:normal;max-width:240px;overflow-wrap:anywhere}
.expense-table td{vertical-align:top}
.expense-files{min-width:200px}
.note-table .file-chips{max-width:220px}

/* ===== 전 화면 압축 정리 ===== */
.panel{margin-bottom:10px}.panel>h2,.panel-head{margin-bottom:6px}
th,td{padding:5px 8px}
.stats{gap:8px;margin-bottom:10px}.stat{padding:7px 12px}.stat strong{font-size:17px}
.notice{padding:6px 10px;margin-bottom:8px;line-height:1.5}
.heading{margin-bottom:10px;padding-bottom:8px}
.item-grid,.contact-list{gap:8px}.item{padding:9px 12px}
.item p{margin:3px 0}.item h2{margin:3px 0}
.note-body{max-height:120px}
.help-text{margin:4px 0 8px}
/* 긴 글 2줄 줄임 + 클릭 펼침 */
.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer;overflow-wrap:anywhere}
.clamp.open{display:block;-webkit-line-clamp:unset;overflow:visible}
.clamp:not(.open):hover{color:var(--ink)}
.expense-status{min-width:120px;max-width:200px}.expense-status .tag{white-space:normal}

/* ===== 오늘 화면 그래프 ===== */
.dash-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));gap:10px;margin-bottom:12px}
.chart-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;min-width:0;display:flex;flex-direction:column;gap:6px}
.chart-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.chart-head h3{margin:0;font-size:13px}
.chart-foot{display:flex;gap:4px 12px;flex-wrap:wrap;align-items:center;margin-top:auto;padding-top:4px;border-top:1px solid var(--line)}
.legend{font-size:11px;color:var(--muted);display:inline-flex;align-items:center;gap:4px}
.sw{display:inline-block;width:9px;height:9px;border-radius:2px}.sw.used{background:var(--accent-hi)}.sw.plan{background:#3d4a57}
.hbar{display:grid;grid-template-columns:78px minmax(0,1fr) auto;gap:8px;align-items:center;font-size:12px}
.hbar-label{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hbar-track{position:relative;height:12px;background:#ffffff08;border-radius:3px;overflow:hidden}
.hbar-plan{position:absolute;inset:0 auto 0 0;background:#3d4a57;border-radius:3px}
.hbar-used{position:absolute;inset:2px auto 2px 0;background:linear-gradient(90deg,#0078d4,#4daafc);border-radius:2px;min-width:2px}.hbar-used.over{background:var(--red)}
.hbar-val{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right;font-size:11.5px}.hbar-val small{color:var(--muted)}
.vbars{display:flex;align-items:flex-end;gap:4px;height:120px;padding-top:4px}
.vbar{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;position:relative}
.vbar-fill,.vbar-stack{width:100%;max-width:34px;min-height:2px;border-radius:3px 3px 0 0;background:linear-gradient(180deg,#4daafc,#0078d4)}
.vbar-stack{display:flex;flex-direction:column-reverse;overflow:hidden;background:#ffffff10}.vbar-stack i{display:block;width:100%}
.vbar-val{font-size:10px;color:var(--muted);height:13px;font-variant-numeric:tabular-nums}
.vbar-label{font-size:10px;color:var(--muted);margin-top:3px;white-space:nowrap}
.vbar.now .vbar-label{color:var(--accent-hi);font-weight:700}
.vbar:hover .vbar-fill,.vbar:hover .vbar-stack{filter:brightness(1.25)}
.donut-row{display:flex;gap:14px;align-items:center}
.donut{width:108px;height:108px;flex-shrink:0}.donut circle{transition:stroke-dasharray .4s}
.donut-num{fill:var(--strong);font-size:17px;font-weight:700}.donut-sub{fill:var(--muted);font-size:9px}
.mini-table{font-size:11.5px}.mini-table th,.mini-table td{padding:3px 6px}.mini-table .num{text-align:right;font-variant-numeric:tabular-nums}

/* ===== 오늘 화면 상단 압축 ===== */
.dashboard .heading{padding:0 0 8px;margin-bottom:10px}
.dashboard .heading>div:first-child{display:flex;align-items:baseline;gap:4px 12px}
.dashboard .heading h1{font-size:19px;letter-spacing:-.5px}.dashboard .heading .sub{margin:0}
.dash-overview{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:10px;margin-bottom:10px}
.dash-focus{padding:10px 16px;border-radius:8px;border-left-width:3px}
.dash-focus-title{margin:4px 0 2px;gap:8px}.dash-focus-title h2{font-size:16px}
.dash-focus p{margin:2px 0;font-size:12.5px}.dash-focus .actions{margin-top:6px}
.dash-focus .actions button{min-height:26px;padding:3px 10px}
.dash-focus-memo{max-height:3em;overflow:hidden}
.dash-counts{gap:8px}
.dash-count{gap:2px;padding:8px 12px;border-radius:8px;justify-content:center}
.dash-count strong{font-size:26px;letter-spacing:-1px}.dash-count strong small{font-size:11.5px}
.dash-count span{font-size:12px}.dash-count .small{font-size:11px}
.dash-strip{display:flex;align-items:center;gap:6px 14px;flex-wrap:wrap;padding:7px 14px;margin-bottom:12px;background:var(--card);border:1px solid var(--line);border-left:3px solid var(--orange);border-radius:8px;font-size:12.5px}
.dash-strip strong{color:var(--strong);font-size:12.5px}.dash-strip span{flex:1;min-width:240px;color:var(--ink)}.dash-strip a{font-size:12px;white-space:nowrap}
.dash-strip.ended{border-left-color:var(--red)}
.dash-section-title{margin-bottom:6px}
.dash-stats{gap:8px;margin-bottom:12px}
.dash-stats .stat{padding:8px 12px;border-radius:8px}
.dash-stats .stat strong{font-size:19px;margin:2px 0}
.dash-stats .meter{margin:5px 0 4px;height:4px}
.dashboard .panel{padding:10px 14px;margin-bottom:10px;border-radius:8px}
.dashboard .panel-head{margin-bottom:4px}
.dashboard .task{padding:7px 0}
.dash-diary{padding:10px 14px;margin-bottom:10px;border-radius:8px}
.dash-columns{gap:10px}
@media (max-width:1100px){.dash-overview{grid-template-columns:1fr}}

/* ===== 달력 재구성 ===== */
.cal-wrap{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:10px;align-items:start}
.cal-legend{gap:10px;margin-bottom:6px}.cal-toggle small{color:var(--muted);font-variant-numeric:tabular-nums}
.cal-head{padding:4px;font-size:11px}
.cal-day{min-height:58px;padding:3px 4px 4px;gap:2px}
.cal-day.no-events{min-height:40px}
.cal-date{font-size:11px;padding:0 1px}.cal-add{height:16px;min-height:16px;width:18px;font-size:13px}
.cal-ev{padding:0 5px;font-size:10.5px;line-height:16px;border-left-width:2px}
.cal-extra{display:none}.cal-day.open .cal-extra{display:block}
.cal-more{min-height:0;height:15px;padding:0 4px;font-size:10px;line-height:15px;background:transparent;color:var(--accent-hi);border:0;text-align:left;width:auto}
.cal-more:hover{text-decoration:underline;background:transparent}
.cal-agenda{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:8px 10px;position:sticky;top:8px;max-height:calc(100vh - 140px);overflow-y:auto}
.ag-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.ag-head strong{font-size:13px;color:var(--strong)}.ag-head span{font-size:10.5px;color:var(--muted)}
.ag-day{padding:5px 0;border-top:1px solid var(--line)}
.ag-date{font-size:11px;color:var(--muted);margin-bottom:3px}.ag-date b{color:var(--strong);font-size:12px;margin-right:2px}
.ag-date em{font-style:normal;font-size:10px;margin-left:4px;padding:0 5px;border-radius:8px;background:#3794ff26;color:#9cd0ff}
.ag-date em.now{background:var(--accent);color:#fff}.ag-date em.late{background:#f4877133;color:#ffb4a6}
.ag-item{display:block;width:100%;text-align:left;min-height:0;padding:2px 6px;margin:1px 0;font-size:11.5px;line-height:1.4;background:transparent;border:0;border-left:2px solid #3794ff;border-radius:3px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-item:hover{background:#ffffff0d}.ag-item.people{border-color:#4ec9b0}.ag-item.late{border-color:var(--red)}
.ag-item span{font-size:10px;color:var(--muted);margin-right:5px}
@media (max-width:1200px){.cal-wrap{grid-template-columns:minmax(0,1fr) 220px}}
@media (max-width:900px){.cal-wrap{grid-template-columns:1fr}.cal-agenda{position:static;max-height:none}}

/* ===== 달력 화면 높이 맞춤 ===== */
.cal-months{display:grid;gap:14px;min-width:0}
.cal-wrap{align-items:start}
.cal-caption{margin:0 0 4px;font-size:13px;color:var(--strong);font-weight:600}
.cal-grid{height:calc(100vh - 196px);min-height:496px;grid-template-rows:auto;grid-auto-rows:minmax(0,1fr)}
.cal-day,.cal-day.no-events{min-height:0;overflow:hidden}
.cal-agenda{height:calc(100vh - 172px);min-height:520px;max-height:none;position:sticky;top:calc(var(--titlebar) + 8px)}
@media (max-width:900px){.cal-agenda{height:auto;min-height:0;position:static}}
@media (max-width:760px){.cal-grid{height:auto;min-height:0}}

/* ===== 멘토링 준비 자료 ===== */
.mq-blocks{display:grid;gap:10px;margin-top:8px}
.mq-block{border:1px solid var(--line);border-radius:var(--radius);padding:8px 12px;background:#ffffff05}
.mq-block h3{margin:0 0 6px;font-size:13px;color:var(--accent-hi)}
.mq-table{width:100%;font-size:12.5px}.mq-table th{font-size:11.5px;color:var(--muted);white-space:nowrap}
.mq-table td{line-height:1.55;vertical-align:top}.mq-table td:nth-child(2){color:var(--strong);white-space:nowrap}
.mq-key{color:var(--brand);font-weight:600;white-space:nowrap}
.mq-lines p{margin:3px 0;line-height:1.6;font-size:13px}.mq-lines p.mq-check{padding-left:2px;color:var(--ink)}
@media (max-width:900px){.mq-table td:nth-child(2),.mq-key{white-space:normal}}

/* 최초 실행 설정 마법사 */
#setup-dialog{max-width:680px}#setup-form{padding:0 18px 4px}#setup-form h3{margin:12px 0 4px;font-size:15px}
.setup-steps{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 0}.setup-steps span{font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid var(--border);color:var(--muted)}
.setup-steps span.on{border-color:var(--accent-hi);color:var(--ink);font-weight:600}.setup-steps span.done{color:var(--green)}
#setup-form textarea{width:100%;min-height:150px}

/* 노션·엑셀 가져오기 */
#import-dialog{max-width:900px}.import-wrap{padding:0 18px 4px}.import-summary{margin:10px 0 4px;font-size:13.5px}
#import-preview table{font-size:12px}#import-preview .scroll{max-height:42vh}

/* AI 문장 다듬기 */
.ai-write-btn{margin:6px 0 2px}#ai-write-dialog{max-width:min(1200px,96vw);width:96vw}.ai-write-wrap{padding:0 18px 4px}
.ai-write-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ai-write-cols h3{font-size:13px;margin:6px 0}.ai-write-cols textarea{width:100%;min-height:52vh;font-size:13px;line-height:1.6}
@media screen and (max-width:800px){.ai-write-cols{grid-template-columns:1fr}.ai-write-cols textarea{min-height:30vh}}
.import-notion{margin:8px 0;padding:8px 12px;border:1px dashed var(--border);border-radius:8px}.import-notion summary{cursor:pointer;color:var(--accent-hi);font-size:13px}.import-notion input{flex:1;min-width:0}

/* AI 작성 도우미 채팅 (활동보고서·사업계획서 왼쪽) */
#content.with-chat{display:grid;grid-template-columns:minmax(300px,380px) minmax(0,1fr);gap:18px;align-items:start}
.chat-doc{min-width:0}
.ai-chat{position:sticky;top:10px;height:calc(100vh - 120px);display:flex;flex-direction:column;border:1px solid var(--border);border-radius:10px;background:var(--card);overflow:hidden}
.chat-head{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border-bottom:1px solid var(--line)}
.chat-log{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:12px}
.chat-msg{font-size:13.5px;line-height:1.65;overflow-wrap:anywhere}
.chat-msg.user{align-self:stretch;background:#0078d422;border:1px solid #0078d455;border-radius:10px;padding:9px 12px}
.chat-msg.busy{color:var(--muted);animation:chatpulse 1.4s ease-in-out infinite}
@keyframes chatpulse{50%{opacity:.45}}
.chat-edit{display:flex;justify-content:space-between;align-items:center;margin-top:6px;font-size:12px;color:var(--muted)}.chat-edit.on span{color:var(--green)}
.chat-empty{display:flex;flex-direction:column;gap:6px;align-items:flex-start}.chat-empty p{margin:0}
.chat-input{display:flex;gap:8px;padding:10px;border-top:1px solid var(--line)}.chat-input textarea{flex:1;resize:none;min-height:44px;max-height:140px;font-size:13.5px}
.chat-input button{align-self:flex-end;min-width:44px}
.chat-foot{margin:0;padding:0 12px 10px}
.activity-question.chat-flash{animation:chatflash 1.6s ease-out}
@keyframes chatflash{0%{box-shadow:0 0 0 2px var(--accent-hi)}100%{box-shadow:0 0 0 2px transparent}}
@media screen and (max-width:1100px){#content.with-chat{grid-template-columns:1fr}.ai-chat{position:static;height:60vh}}
@media (prefers-reduced-motion:reduce){.chat-msg.busy,.activity-question.chat-flash{animation:none}}
.chat-edit button{white-space:nowrap;flex:none}.chat-edit span{flex:1;min-width:0}
.chat-edit.held span{color:var(--orange)}.chat-held{font-size:12.5px;margin-top:4px}.chat-held summary{cursor:pointer;color:var(--muted)}.chat-held p{white-space:normal;max-height:220px;overflow:auto;border-left:2px solid var(--orange);padding-left:8px}
.chat-warn{margin:4px 0 0;font-size:12px;color:var(--orange)}

/* AI 설정 도우미·질문 창 */
.field.ai-filled input,.field.ai-filled textarea,.field.ai-filled select{border-color:var(--orange);box-shadow:0 0 0 1px var(--orange)}
.field.ai-filled label::after{content:' · AI가 채움';color:var(--orange);font-weight:400}
.chat-settings{margin-top:6px}.chat-evidence{margin:2px 0 6px 16px;font-size:12px;color:var(--muted)}
/* 채팅 작업(등록·수정·삭제) 카드 */
.chat-actions{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.chat-action{border:1px solid var(--line);border-left:3px solid var(--accent-hi);border-radius:8px;padding:7px 9px;font-size:12.5px}
.chat-action.update{border-left-color:var(--orange)}.chat-action.delete{border-left-color:#c94040}
.chat-action.on{border-left-color:var(--green);background:#2e9e5b10}.chat-action.held{opacity:.8;border-left-style:dashed}
.chat-action-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.chat-action-head span{flex:1;min-width:0}.chat-action-head button{flex:none;white-space:nowrap}
.chat-changes{margin:4px 0 0;padding-left:16px;color:var(--muted)}.chat-changes li span{color:var(--text,inherit)}.chat-changes del{opacity:.7}
.chat-done{margin:4px 0 0;color:var(--green)}.chat-act-all{align-self:flex-start}
.chat-head{flex-direction:row!important;justify-content:space-between;align-items:center}.chat-head>div{display:flex;flex-direction:column;gap:2px}
.chat-file{display:flex;justify-content:space-between;align-items:center;margin:0 10px;padding:4px 10px;border:1px dashed var(--border);border-radius:8px;font-size:12.5px}
.chat-attach{align-self:flex-end;font-size:16px;min-width:36px}
.chat-fab{position:fixed;right:24px;bottom:44px;z-index:30;padding:12px 18px;border-radius:999px;border:0;background:var(--accent);color:#fff;font-weight:600;box-shadow:0 8px 24px #0008;cursor:pointer}
.chat-fab:hover{background:var(--accent-hi)}
.ai-chat.drawer{position:fixed;right:16px;bottom:40px;top:auto;z-index:31;width:min(420px,calc(100vw - 32px));height:min(640px,calc(100vh - 120px));box-shadow:0 18px 60px #000a}
.setup-ai{margin:10px 0;padding:8px 12px;border:1px dashed var(--border);border-radius:8px}.setup-ai summary{cursor:pointer;color:var(--accent-hi);font-size:13px}.setup-ai .settings-key{margin-top:6px}.setup-ai input[type=password]{flex:1}
@media print{.chat-fab,.ai-chat{display:none!important}#content.with-chat{display:block}}
.ai-chat[hidden],.chat-fab[hidden],.chat-file[hidden]{display:none!important}
.settings-key button{white-space:nowrap;flex:none}
.field[hidden]{display:none!important}

/* 웹 버전: PC 프로그램 전용 기능(내 PC 자료 링크·개발 폴더 관측·노션 연동)은 숨긴다 */
.web-mode a[href="/plan"],.web-mode a[href^="/documents/"],.web-mode [data-action="scan"],.web-mode [data-action="project-folder"],.web-mode #import-notion-box{display:none!important}
#web-backup{margin-left:6px;font-size:12.5px}

.web-account{display:inline-flex;align-items:center;gap:6px;margin-left:8px}
/* 웹 버전 로그인·관리자 화면 */
.login-page,.admin-page{min-height:100vh;display:flex;justify-content:center;align-items:flex-start;padding:8vh 16px 40px}
.login-card{width:min(440px,100%);background:var(--panel,#1b1f24);border:1px solid var(--line);border-radius:14px;padding:28px 26px;display:flex;flex-direction:column;gap:12px}
.login-card h1{margin:4px 0 0;font-size:22px}.login-card .brand-icon{align-self:flex-start}
.login-button{min-height:44px}.login-notes{margin:6px 0 0;padding-left:18px;font-size:12.5px;color:var(--muted);display:flex;flex-direction:column;gap:4px}
.login-admin{align-self:flex-end;font-size:12px;color:var(--muted);margin-top:4px}.login-admin:hover{color:var(--strong)}
.admin-main{width:min(1100px,100%);display:flex;flex-direction:column;gap:16px}.admin-login{margin:0 auto}
.admin-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.admin-head h1{margin:0}
.admin-ai{display:grid;grid-template-columns:110px 1fr;gap:6px 12px;margin:8px 0;font-size:13.5px}.admin-ai dt{color:var(--muted)}.admin-ai dd{margin:0;overflow-wrap:anywhere}
.admin-users td,.admin-users th{vertical-align:top}.admin-users select{min-width:96px}.admin-users .num{text-align:right;white-space:nowrap}
.login-page main.login-card,.admin-login{min-height:0;height:auto;flex:0 0 auto}
