:root {
  color-scheme:light;
  --bg:#F2F6F3;--surface:#FFFFFF;--border:#E3ECE7;--text-primary:#1C2733;--text-secondary:#5A6B76;
  --text-on-brand:#FFFFFF;--brand-primary:#16412F;--brand-field:#2E7D5B;--brand-accent:#F2C14E;
  --brand-accent-text:#7E5F1E;--success-bg:#E9F5EF;--warning-bg:#FDF6E4;--error:#C0392B;--error-bg:#FDECEA;--disabled:#D5E2DB;
  --campus-ivory:#FAFAF2;--campus-wood:#E9E1CF;--shadow:0 6px 25px #1c382b06;
  --paper:var(--bg);--white:var(--surface);--ink:var(--text-primary);--muted:var(--text-secondary);
  --teal:var(--brand-field);--teal-deep:var(--brand-primary);--line:var(--border);
  --font:Pretendard,'Noto Sans KR','Apple SD Gothic Neo','Malgun Gothic','맑은 고딕',sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:18px}
body{margin:0;background:var(--bg);color:var(--text-primary);font-family:var(--font);font-size:17px;line-height:1.75;word-break:keep-all;overflow-wrap:anywhere}
button,input,select,textarea{font:inherit;color:inherit}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
button,.button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;min-width:52px;padding:10px 18px;border:1px solid var(--text-secondary);border-radius:9px;background:var(--surface);color:var(--text-primary);font-size:17px;font-weight:650;line-height:1.75;text-decoration:none;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s}
button:hover:not(:disabled),.button:hover,.btn:hover{border-color:var(--brand-field);background:var(--success-bg)}
button:disabled,.button[aria-disabled="true"]{opacity:.58;cursor:default}
button.primary,.button.primary,.btn.primary{background:var(--brand-primary);border-color:var(--brand-primary);color:var(--text-on-brand)}
button.primary:hover:not(:disabled),.button.primary:hover{background:var(--brand-field);border-color:var(--brand-field)}
button.secondary,.button.secondary{border-color:var(--border);background:var(--surface)}
button.danger,.button.danger{border-color:var(--error);color:var(--error);background:var(--surface)}
button.danger:hover:not(:disabled),.button.danger:hover{background:var(--error-bg)}
button.ghost,.button.ghost{border-color:transparent;background:transparent;color:var(--text-secondary)}
button.ghost:hover:not(:disabled){background:var(--success-bg)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex="-1"]:focus-visible{outline:3px solid var(--brand-field);outline-offset:3px}
button[aria-pressed="true"],button[aria-selected="true"]{border-color:var(--brand-primary);background:var(--success-bg);color:var(--brand-primary)}
input,select,textarea{min-height:52px;width:100%;padding:10px 13px;border:1px solid var(--text-secondary);border-radius:8px;background:var(--surface);color:var(--text-primary);font-size:17px;line-height:1.75}
input[type="checkbox"],input[type="radio"]{width:22px;height:22px;min-height:22px;accent-color:var(--brand-field);flex:none;cursor:pointer}
textarea{min-height:120px;resize:vertical}
input::placeholder,textarea::placeholder{color:var(--text-secondary);opacity:1}
input[readonly]{background:var(--bg)}
input:disabled,select:disabled{background:var(--bg);color:var(--text-secondary)}
a{color:var(--brand-primary);text-underline-offset:4px}
h1,h2,h3,h4,p{margin:0}
h1{font-size:34px;line-height:1.4;letter-spacing:-1px;color:var(--brand-primary)}
h2{font-size:24px;line-height:1.5;letter-spacing:-.6px;color:var(--brand-primary)}
h3{font-size:20px;line-height:1.6;letter-spacing:-.3px}
h4{font-size:17px;line-height:1.75}
img{display:block;max-width:100%}
[hidden],.hide{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;left:18px;top:-100px;z-index:100;padding:12px 18px;border-radius:8px;background:var(--brand-primary);color:var(--text-on-brand)}
.skip-link:focus{top:12px}
.small,small.metadata{font-size:15px}
.muted{color:var(--text-secondary)}
.small.muted{font-size:15px}
.eyebrow{font-size:17px;line-height:1.75;font-weight:700;color:var(--brand-field);margin-bottom:6px;letter-spacing:.3px}
.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.row.between,.space-between{justify-content:space-between}
.row.end,.actions{justify-content:flex-end}
.spacer{flex:1}
.stack{display:grid;gap:16px}
.full-width{width:100%}
.badge,.small-badge,.status-badge,.locked-badge,.doc-kind,.authority-badge,.demo-chip{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:3px 9px;border:1px solid var(--border);border-radius:7px;background:var(--bg);color:var(--text-secondary);font-size:17px;font-weight:500;line-height:1.75;white-space:normal}
.badge.success,.badge[data-tone="success"],.badge[data-status="approved"],.badge[data-status="active"],.status-badge[data-status="approved"]{color:var(--brand-primary);background:var(--success-bg);border-color:var(--disabled)}
.badge.warning,.badge[data-tone="warning"],.badge[data-status="pending"],.badge[data-status="held"],.badge[data-status="revise"]{color:var(--brand-accent-text);background:var(--warning-bg);border-color:var(--brand-accent)}
.badge.danger,.badge[data-tone="danger"],.badge[data-status="rejected"],.badge[data-status="stopped"]{color:var(--error);background:var(--error-bg);border-color:var(--error)}
.note,.warning,.error-notice,.success-notice,.empty-state,.error-state,.loading-state{padding:15px 18px;border:1px solid var(--border);border-radius:10px;background:var(--bg);font-size:17px;line-height:1.75}
.note{color:var(--text-secondary)}
.warning{background:var(--warning-bg);border-color:var(--brand-accent);color:var(--brand-accent-text)}
.error-notice,.error-state{background:var(--error-bg);border-color:var(--error);color:var(--error)}
.success-notice{background:var(--success-bg);color:var(--brand-primary);border-color:var(--disabled)}
.empty-state,.loading-state{padding:30px 22px;text-align:center;color:var(--text-secondary)}
.empty-state h2,.error-state h2,.loading-state h2{font-size:22px;margin-bottom:9px}
.empty-state button,.error-state button{margin-top:15px}
.inline-feedback{font-size:17px;line-height:1.75;color:var(--brand-primary);overflow-wrap:anywhere}
.inline-feedback:not(:empty){margin-top:12px}

.topbar,.app-header{background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:24px;flex-wrap:wrap;padding:17px max(24px,3.2%)}
.brand{display:inline-flex;align-items:center;gap:12px;text-decoration:none;font-size:25px;line-height:1.2;font-weight:800;letter-spacing:-.8px}
.brand small{display:block;color:var(--text-secondary);font-size:17px;line-height:1.5;font-weight:500;letter-spacing:0;margin-top:4px}
.brand-mark{display:inline-flex;align-items:center;justify-content:center;flex:none;width:45px;height:50px;border-radius:14px 14px 14px 4px;background:var(--brand-primary);color:var(--text-on-brand);font-size:31px;font-weight:750}
.topbar-path{font-size:17px;color:var(--text-secondary);margin-left:13px}
.topbar>.danger,.topbar .global-stop,.app-header .danger{margin-left:auto}
.topbar .role-badge{margin-left:auto}
.topbar .role-badge+.danger{margin-left:0}
.main-nav,.page-nav,.nav-tabs{display:flex;gap:8px;flex-wrap:wrap;padding:16px max(24px,3.2%) 0;background:var(--bg)}
.main-nav>a,.main-nav>button,.page-nav>a,.page-nav>button,.nav-tabs>a,.nav-tabs>button{min-height:52px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 19px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text-secondary);font-size:17px;font-weight:650;line-height:1.75;text-decoration:none}
.main-nav>[aria-current="page"],.main-nav>.active,.page-nav>[aria-current="page"],.page-nav>.active,.nav-tabs>[aria-selected="true"],.nav-tabs>[aria-current="page"]{background:var(--brand-primary);color:var(--text-on-brand);border-color:var(--brand-primary)}
.main-nav>a:hover,.page-nav>a:hover{border-color:var(--brand-field)}
main{max-width:1660px;margin:0 auto;padding:25px 3.2% 0;min-width:0}
.mode-banner,.demo-banner,.demo-notice{padding:13px 17px;border:1px solid var(--brand-accent);border-radius:10px;background:var(--warning-bg);color:var(--brand-accent-text);font-size:17px;line-height:1.75;margin-bottom:20px}
.mode-banner strong,.demo-banner strong,.demo-notice strong{font-weight:750}
.demo-controls{display:flex;align-items:end;gap:13px;flex-wrap:wrap;padding:15px 17px;margin-bottom:24px;background:var(--surface);border:1px solid var(--border);border-radius:12px}
.demo-controls label{margin:0;display:grid;gap:6px;font-weight:600;min-width:165px}
.demo-controls select{min-width:165px}
.demo-controls .motion-label,.demo-controls .checkbox-label{display:flex;align-items:center;gap:9px;min-height:52px;font-weight:500;min-width:0}
.demo-controls .button,.demo-controls button{flex:none}
.page-heading,.hero,.page-hero{display:flex;align-items:center;justify-content:space-between;gap:22px;margin:0 0 22px}
.page-heading p,.hero p,.page-hero p{color:var(--text-secondary);font-size:17px;line-height:1.75;margin-top:8px}
.page-heading .eyebrow,.hero .eyebrow,.page-hero .eyebrow{color:var(--brand-field);margin-top:0}
.section-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px}
.section-heading p{color:var(--text-secondary);font-size:17px;margin-top:7px}
.section-heading .eyebrow{margin-top:0}
.card>.section-heading{margin-bottom:19px}
.card,.company-board,.work-detail,.person-card,.agent-card,.doc-card,.report-card{padding:22px;border:1px solid var(--border);border-radius:15px;background:var(--surface);min-width:0;box-shadow:var(--shadow)}
.card h2,.card h3{margin-bottom:8px}
.grid-2,.grid-3,.report-grid,.form-grid{display:grid;gap:18px;align-items:start}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3,.report-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.form-grid>.full,.form-grid>.full-width{grid-column:1/-1}
.field{min-width:0;display:grid;gap:6px}
.field>label,.field>span:first-child{font-size:17px;font-weight:700}
.field small,.field>.small{font-size:15px;color:var(--text-secondary)}
.field .row{flex-wrap:nowrap}
label.checkbox-label,.checkbox-label{display:flex;align-items:center;gap:10px;min-height:52px;font-size:17px;cursor:pointer}
.toolbar{display:flex;align-items:end;justify-content:flex-start;gap:12px;flex-wrap:wrap;margin:0 0 19px;min-width:0}
.toolbar>label{display:grid;gap:6px;flex:1;min-width:150px;font-weight:600}
.toolbar>button,.toolbar>.button{flex:none}
.toolbar .search,.toolbar input[type="search"]{min-width:230px;flex:1}
.tabs,.tab-list{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 21px;border-bottom:1px solid var(--border);padding:0 0 12px}
.tabs>button,.tabs>a,.tab-list>button{min-height:52px;font-size:17px;border-color:var(--border);background:var(--surface);text-decoration:none}
.tabs>[aria-pressed="true"],.tabs>[aria-selected="true"],.tabs>.active,.tab-list>[aria-selected="true"]{border-color:var(--brand-primary);background:var(--success-bg);color:var(--brand-primary);font-weight:700}
.metric-grid,.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:23px}
.stat,.metric{padding:17px 20px;background:var(--surface);border:1px solid var(--border);border-radius:13px;box-shadow:var(--shadow);min-width:0}
.stat>span,.metric>span,.stat dt{display:block;color:var(--text-secondary);font-size:17px;font-weight:600}
.stat>strong,.metric>strong,.stat dd{display:block;font-size:31px;line-height:1.6;font-weight:750;letter-spacing:-.8px;margin:4px 0 0}
.stat strong small,.metric strong small{font-size:17px;font-weight:500}
.stat p,.metric p{color:var(--text-secondary);font-size:17px;line-height:1.75;margin-top:5px}
.stat .small{font-size:15px}
.page-footer{padding:29px 0 28px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;color:var(--text-secondary);font-size:15px}
.page-footer strong{color:var(--brand-primary);font-size:20px}
#page-content{min-width:0}

.company-grid,.department-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;margin-top:20px}
.company-board{margin-bottom:22px}
.department-card{padding:15px 14px 14px;display:block;position:relative;width:100%;min-width:0;text-align:left;background:var(--campus-ivory);border:1px solid var(--border);border-radius:13px;box-shadow:0 2px 6px #1c382b05;cursor:pointer}
.department-card:hover:not(:disabled){background:var(--success-bg);border-color:var(--brand-field)}
.department-card[aria-expanded="true"],.department-card[aria-pressed="true"]{border-color:var(--brand-primary);background:var(--success-bg);box-shadow:0 0 0 2px var(--disabled)}
.dept-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}
.dept-heading strong,.dept-title{font-size:19px;font-weight:750;letter-spacing:-.3px}
.dept-heading small,.dept-active{font-size:17px;font-weight:500;color:var(--text-secondary)}
.dept-scene{position:relative;height:219px;margin:3px -7px 8px;isolation:isolate}
.dept-scene::before{content:"";position:absolute;left:12%;right:12%;bottom:15px;height:46px;background:radial-gradient(ellipse,var(--campus-wood),transparent 70%);opacity:.45;z-index:-1}
.room-img,.dept-scene>.room-img{width:100%;height:100%;object-fit:contain;object-position:center;filter:drop-shadow(0 6px 3px #263f2710)}
.team-sprite{position:absolute;left:var(--x,51%);top:var(--y,82%);display:block;width:65px;height:99px;transform:translate(-50%,-100%);z-index:2}
.team-sprite>img{width:100%;height:100%;object-fit:contain;object-position:center bottom;transform-origin:center bottom;filter:drop-shadow(0 2px 2px #1c382b15)}
.team-sprite[data-active="true"]>img,.team-sprite.is-working>img{animation:breathe 4s ease-in-out infinite}
.lead-flag{position:absolute;left:50%;top:-17px;transform:translateX(-50%);background:var(--brand-primary);color:var(--text-on-brand);border:1px solid var(--surface);border-radius:6px;font-size:17px;line-height:1.6;padding:1px 7px;white-space:nowrap}
.dept-summary{font-size:17px;line-height:1.75;color:var(--text-secondary);margin:7px 0 10px}
.dept-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;border-top:1px solid var(--border);padding-top:10px;font-size:17px;color:var(--text-secondary)}
.dept-link{font-size:17px;color:var(--brand-primary)}
.department-detail{margin-top:22px}
.department-detail .team-members{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}
.person-card,.agent-card{display:flex;align-items:flex-start;gap:15px}
.person-card img,.agent-card img,.agent-avatar{height:100px;width:68px;object-fit:contain;object-position:center bottom;flex:none}
.person-card>div,.agent-card>div{min-width:0}
.person-card h3,.agent-card h3{font-size:20px;margin:0 0 3px}
.person-card p,.agent-card p{font-size:17px;line-height:1.75;margin-top:6px;color:var(--text-secondary)}
.person-card .row,.agent-card .row{margin-top:11px}
.person-card .badge,.agent-card .badge{font-size:17px}
.work-card{display:block;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:13px;padding:19px 20px;margin-bottom:14px}
button.work-card{width:100%;text-align:left;justify-content:stretch}
.work-card h3,.work-card strong{font-size:20px}
.work-card p{font-size:17px;color:var(--text-secondary);margin-top:7px;line-height:1.75}
.work-card .work-meta,.work-meta{display:flex;gap:8px 18px;flex-wrap:wrap;color:var(--text-secondary);font-size:17px;margin-top:12px}
.work-detail{margin-top:20px;scroll-margin-top:20px}
.work-detail h2{margin-bottom:13px}
.work-detail h3{margin-top:19px;margin-bottom:8px}
.work-detail .audit-note,.work-detail .note{margin-top:14px}
.history-list,.event-list,.timeline{list-style:none;padding:0;margin:18px 0 0}
.history-list li,.event-list li,.timeline li{display:grid;grid-template-columns:80px minmax(0,1fr);gap:14px;padding:0 0 17px;min-width:0}
.history-list time,.event-list time,.timeline time{font-size:15px;color:var(--text-secondary);font-variant-numeric:tabular-nums}
.history-list li>div,.event-list li>div,.timeline li>div{min-width:0;border-left:1px solid var(--border);padding-left:15px}
.history-list strong,.event-list strong,.timeline strong{font-size:17px;display:block;line-height:1.75}
.history-list p,.event-list p,.timeline p{font-size:17px;color:var(--text-secondary);line-height:1.75;overflow-wrap:anywhere}
.collaboration-empty{font-size:17px;color:var(--text-secondary);padding:13px 15px;border:1px dashed var(--disabled);border-radius:8px;margin-top:15px}

.doc-list,.work-list{display:grid;gap:17px}
.doc-card{margin:0;padding:23px}
.doc-header,.doc-top{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}
.doc-header h2,.doc-header h3,.doc-top h3{font-size:21px}
.doc-header .row,.doc-top .row{gap:8px}
.doc-number{font-size:15px;color:var(--text-secondary);font-variant-numeric:tabular-nums}
.doc-kind{background:var(--success-bg);color:var(--brand-primary)}
.doc-kind[data-kind="spend"],.doc-kind[data-kind="price"],.doc-kind[data-kind="contract"],.doc-kind[data-kind="vendor"]{background:var(--warning-bg);color:var(--brand-accent-text);border-color:var(--brand-accent)}
.doc-kind[data-kind="delete"],.doc-kind[data-kind="legal"]{background:var(--error-bg);color:var(--error);border-color:var(--error)}
.doc-effect{font-size:24px;font-weight:750;line-height:1.65;letter-spacing:-.6px;color:var(--brand-primary);padding:16px 19px;border-left:4px solid var(--brand-field);border-radius:0 9px 9px 0;background:var(--success-bg);margin:15px 0 17px}
.doc-effect>small,.doc-effect .effect-label{display:block;font-size:17px;font-weight:600;line-height:1.75;margin-bottom:3px}
.doc-amount{font-size:22px;font-weight:750;line-height:1.7}
.approval-lines{display:flex;align-items:stretch;flex-wrap:wrap;gap:10px;margin:16px 0}
.approval-lines>div,.approval-lines>li,.approval-line{min-width:150px;flex:1;padding:12px 14px;background:var(--bg);border:1px solid var(--border);border-radius:9px;font-size:17px;list-style:none}
.approval-lines strong,.approval-line strong{display:block;font-size:17px}
.approval-lines p,.approval-lines small,.approval-line p{display:block;font-size:17px;color:var(--text-secondary);line-height:1.75}
.line-disagreed,.approval-lines>.line-disagreed{color:var(--error);background:var(--error-bg);border:1px solid var(--error)}
.line-disagreed p,.line-disagreed strong,.line-disagreed small{color:var(--error)}
.audit-note{padding:13px 16px;background:var(--campus-ivory);border:1px solid var(--campus-wood);border-radius:9px;color:var(--text-secondary);font-size:17px;line-height:1.75;margin:14px 0}
.audit-note strong{color:var(--text-primary)}
.doc-actions,.modal-actions{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:10px;margin-top:18px}
.doc-actions>button{flex:1;min-width:112px}
.doc-body{margin-top:17px;border-top:1px solid var(--border);padding-top:7px}
.doc-body details,details.doc-body{border:1px solid var(--border);border-radius:9px;background:var(--surface);padding:0;margin:12px 0 0;overflow:hidden}
details>summary{min-height:52px;cursor:pointer;font-size:17px;font-weight:700;padding:12px 15px;color:var(--brand-primary)}
details[open]>summary{border-bottom:1px solid var(--border);background:var(--bg)}
details>div,details>dl{padding:15px;margin:0}
.doc-body dl{display:grid;grid-template-columns:150px minmax(0,1fr);gap:11px 16px}
.doc-body dt{font-weight:700;font-size:17px}
.doc-body dd{margin:0;font-size:17px;line-height:1.75;min-width:0}
.locked-badge{color:var(--brand-primary);background:var(--success-bg);border-color:var(--disabled)}
.report-grid{margin-top:17px}
.report-grid>div,.report-grid>article{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:16px;min-width:0}
.report-grid h3{font-size:18px}
.report-grid p{font-size:17px;line-height:1.75;margin-top:8px}
.doc-card .field{margin-top:15px}
.batch-toolbar{display:flex;align-items:center;justify-content:space-between;gap:13px;flex-wrap:wrap;padding:14px 17px;border:1px solid var(--disabled);border-radius:10px;background:var(--success-bg);margin-bottom:18px}
.batch-toolbar p{font-size:17px}
.doc-selection{display:flex;align-items:center;gap:10px;min-height:52px;font-size:17px}
.doc-selection input{width:22px;min-height:22px}

.table-wrap{width:100%;max-width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:10px;margin-top:15px;background:var(--surface);overscroll-behavior-inline:contain}
table{width:100%;border-collapse:collapse;font-size:17px;line-height:1.75}
th,td{padding:12px 15px;border-bottom:1px solid var(--border);vertical-align:top;text-align:left}
th{background:var(--bg);font-weight:700;color:var(--text-secondary)}
tr:last-child td{border-bottom:0}
.cost-table{min-width:600px}
.cost-table td:last-child,.cost-table th:last-child{text-align:right;font-variant-numeric:tabular-nums}
.table-wrap .button,.table-wrap button{white-space:nowrap}
.bar,.progress{width:100%;height:14px;border-radius:999px;background:var(--disabled);overflow:hidden;position:relative;margin:10px 0}
.bar>span,.bar>i,.progress>span,.progress>i{display:block;height:100%;width:var(--value,0%);max-width:100%;border-radius:inherit;background:var(--brand-field)}
.bar.over>span,.bar[data-over="true"]>span,.progress.over>span{background:var(--error)}
.budget-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:17px}
.budget-row strong{font-size:20px}
.budget-card .warning{margin-top:15px}
.key-reveal,.key-once{margin-top:15px;padding:17px;border:1px solid var(--brand-accent);border-radius:10px;background:var(--warning-bg)}
.key-reveal code,.key-once code{display:block;font:17px/1.75 ui-monospace,Consolas,monospace;overflow-wrap:anywhere;word-break:break-all;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:8px;margin:13px 0}
.token-text{font:17px/1.75 ui-monospace,Consolas,monospace;overflow-wrap:anywhere;word-break:break-all}
.person-grid,.agents-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}
.role-card{padding:18px;border:1px solid var(--border);border-radius:11px;background:var(--surface)}
.role-card h3{margin-bottom:8px}
.role-card ul{padding-left:22px;margin:9px 0 0}
.role-card li{font-size:17px;line-height:1.75}
.organization-tree{padding:0;list-style:none}
.organization-tree>li{padding:15px;border:1px solid var(--border);border-radius:10px;background:var(--surface);margin-bottom:12px}
.organization-tree ul{padding-left:24px;margin-top:8px}
.organization-tree li{font-size:17px;line-height:1.75}

dialog.modal,dialog{width:min(680px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:25px;border:1px solid var(--border);border-radius:15px;box-shadow:0 22px 80px #132b2440;color:var(--text-primary);background:var(--surface);font:17px/1.75 var(--font);overflow:auto}
dialog::backdrop{background:#122b2460}
dialog h2{font-size:25px;line-height:1.5;margin-bottom:10px}
dialog h3{margin:15px 0 7px}
dialog p{font-size:17px;line-height:1.75}
dialog label{display:block;font-size:17px;font-weight:700;margin-top:16px;margin-bottom:5px}
dialog .form-grid label{margin-top:0}
dialog .field{margin-top:14px}
dialog .modal-actions{justify-content:flex-end;margin-top:22px}
dialog .warning,dialog .note{margin-top:15px}
dialog form{margin:0}
.mfa-qr{width:190px;height:190px;margin:17px auto;padding:10px;border:1px solid var(--border);border-radius:9px;background:var(--surface);display:grid;place-items:center}
.mfa-qr img,.mfa-qr svg{max-width:100%;width:100%;height:100%;object-fit:contain}
.otp,input.otp{font-size:27px;letter-spacing:.45em;font-weight:700;font-variant-numeric:tabular-nums;text-align:center;padding-left:calc(13px + .45em);max-width:330px;margin:10px auto 0;display:block}
.modal .otp-label{text-align:center}
.is-paused .team-sprite>img{animation-play-state:paused}
.is-reduced-motion *,.is-reduced-motion *::before,.is-reduced-motion *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@keyframes breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.5px)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

@media(min-width:1600px){.dept-scene{height:238px}.team-sprite{height:106px;width:70px}}
@media(max-width:1200px){
  .company-grid,.department-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dept-scene{height:247px}.team-sprite{height:111px;width:74px}
  .grid-3,.report-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .metric-grid,.stats{gap:12px}.stat,.metric{padding:15px}
  .topbar-path{display:none}
  .main-nav>a,.page-nav>a{flex:1;white-space:nowrap;padding-left:13px;padding-right:13px}
}
@media(max-width:850px){
  .topbar,.app-header{gap:15px;padding:15px 22px}
  .topbar .brand{flex:1}
  .topbar>.danger,.topbar .global-stop,.app-header .danger{margin-left:0}
  .main-nav,.page-nav,.nav-tabs{padding-left:22px;padding-right:22px}
  main{padding-left:22px;padding-right:22px}
  .metric-grid,.stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .page-heading,.hero,.page-hero{align-items:flex-start}
  .grid-2{grid-template-columns:minmax(0,1fr)}
  .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .person-grid,.agents-grid{grid-template-columns:minmax(0,1fr)}
  .section-heading{align-items:flex-start}
  .doc-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .doc-actions>button{width:100%;min-width:0}
  .doc-header,.doc-top{flex-wrap:wrap}
  .doc-effect{font-size:23px}
}
@media(max-width:600px){
  .topbar,.app-header{padding:14px 16px;gap:12px}
  .brand{font-size:23px}.brand small{font-size:17px}.brand-mark{width:39px;height:46px;font-size:29px}
  .topbar .brand{flex-basis:100%}
  .topbar>.danger,.topbar .global-stop{flex:1}
  .topbar .badge,.topbar .demo-chip{font-size:17px}
  .main-nav,.page-nav,.nav-tabs{gap:8px;padding:13px 14px 0}
  .main-nav>a,.main-nav>button,.page-nav>a,.page-nav>button,.nav-tabs>a,.nav-tabs>button{flex:1 1 calc(50% - 8px);min-width:0;padding:10px 8px;white-space:normal;font-size:17px}
  main{padding:20px 14px 0}
  h1{font-size:29px;line-height:1.45}
  h2{font-size:23px}h3{font-size:20px}
  .page-heading,.hero,.page-hero{flex-direction:column;gap:15px;margin-bottom:19px}
  .eyebrow{font-size:17px}
  .mode-banner,.demo-banner,.demo-notice{padding:13px 14px;font-size:17px;margin-bottom:16px}
  .demo-controls{padding:14px;gap:12px;margin-bottom:20px}
  .demo-controls>label{flex:1 1 100%;min-width:0}
  .demo-controls .motion-label{flex-basis:100%}
  .demo-controls>button{flex:1}
  .demo-controls select{min-width:0;width:100%}
  .button,button,.btn{font-size:17px;padding:10px 14px;min-height:52px}
  .metric-grid,.stats{gap:10px;margin-bottom:20px}
  .stat,.metric{padding:14px 12px}
  .stat>span,.metric>span{font-size:17px}
  .stat>strong,.metric>strong{font-size:29px}
  .stat p,.metric p{font-size:17px}
  .card,.company-board,.work-detail,.person-card,.agent-card,.doc-card,.report-card{padding:17px;border-radius:12px}
  .section-heading{flex-wrap:wrap;gap:12px;margin-bottom:16px}
  .section-heading p{font-size:17px}
  .company-grid,.department-grid{grid-template-columns:minmax(0,1fr);gap:14px;margin-top:17px}
  .department-card{padding:15px 14px 14px}
  .dept-heading strong,.dept-title{font-size:20px}
  .dept-scene{height:256px;margin-left:-7px;margin-right:-7px}
  .team-sprite{height:112px;width:75px}
  .dept-summary,.dept-footer,.dept-heading small,.dept-active{font-size:17px}
  .department-detail .team-members{grid-template-columns:minmax(0,1fr)}
  .person-card,.agent-card{gap:13px;flex-wrap:wrap}
  .person-card img,.agent-card img{height:108px;width:72px}
  .person-card>div,.agent-card>div{flex:1;min-width:150px}
  .person-card .row,.agent-card .row{gap:9px}
  .person-card .row>button,.agent-card .row>button{flex:1}
  .grid-3,.report-grid,.form-grid{grid-template-columns:minmax(0,1fr);gap:14px}
  .form-grid>.full,.form-grid>.full-width{grid-column:auto}
  .toolbar{gap:11px;align-items:stretch}
  .toolbar>label,.toolbar>.field{flex:1 1 100%;min-width:0}
  .toolbar>button,.toolbar>.button{flex:1}
  .toolbar input[type="search"],.toolbar .search{min-width:0;width:100%}
  .tabs,.tab-list{gap:8px;padding-bottom:12px}
  .tabs>button,.tabs>a,.tab-list>button{flex:1 1 calc(50% - 8px);min-width:0}
  .doc-card{padding:17px}
  .doc-header,.doc-top{gap:11px}
  .doc-header h2,.doc-header h3,.doc-top h3{font-size:21px}
  .doc-effect{font-size:23px;padding:14px 15px;line-height:1.7}
  .doc-effect small{font-size:17px}
  .approval-lines{flex-direction:column;gap:9px}
  .approval-lines>div,.approval-lines>li,.approval-line{min-width:0;width:100%;font-size:17px}
  .audit-note{padding:13px 14px}
  .doc-body dl{grid-template-columns:minmax(0,1fr);gap:6px}
  .doc-body dd{padding-bottom:12px}
  .doc-actions{gap:9px}
  .doc-actions>button{padding-left:9px;padding-right:9px}
  .report-grid{gap:12px}
  .report-grid>div,.report-grid>article{padding:15px}
  .batch-toolbar{padding:13px 14px;gap:11px}
  .batch-toolbar>button{width:100%}
  .history-list li,.event-list li,.timeline li{grid-template-columns:52px minmax(0,1fr);gap:9px}
  .history-list time,.event-list time,.timeline time{font-size:15px}
  .history-list li>div,.event-list li>div,.timeline li>div{padding-left:12px}
  .table-wrap{margin-top:12px}
  th,td{padding:11px 12px}
  .budget-row{align-items:flex-start;flex-direction:column;gap:3px}
  dialog.modal,dialog{width:calc(100vw - 24px);max-height:calc(100dvh - 24px);padding:20px 17px;border-radius:13px}
  dialog h2{font-size:24px}
  dialog .modal-actions{display:grid;grid-template-columns:minmax(0,1fr);gap:9px}
  dialog .modal-actions>button{width:100%}
  .mfa-qr{width:180px;height:180px}
  .otp,input.otp{font-size:27px;letter-spacing:.3em;padding-left:calc(13px + .3em)}
  .page-footer{display:block;padding:24px 0;font-size:15px}
  .page-footer>span{display:block;margin-top:5px}
}
@media(max-width:360px){
  .topbar,.app-header{padding-left:13px;padding-right:13px}
  main{padding-left:11px;padding-right:11px}
  .main-nav,.page-nav,.nav-tabs{padding-left:11px;padding-right:11px}
  .card,.company-board,.work-detail,.person-card,.agent-card,.doc-card,.report-card{padding:15px}
  .dept-scene{height:226px}
  .team-sprite{height:100px;width:67px}
  .doc-actions{grid-template-columns:minmax(0,1fr)}
  .row{gap:10px}
}

/* Shared V3 shell and the supplied user / AI views. */
.header-status{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-left:auto;font-size:17px;color:var(--text-secondary)}
.page-heading{flex-wrap:wrap;align-items:flex-start}
.page-heading>div:first-child{flex:1;min-width:240px}
.page-heading>.demo-controls{flex:1 1 100%;margin:0}
.demo-controls .check-label{display:flex;align-items:center;gap:10px;min-height:52px;min-width:0;font-weight:500}
.status-strip{display:flex;align-items:center;justify-content:space-between;gap:12px 20px;flex-wrap:wrap;margin:0 0 18px;padding:13px 16px;border:1px solid var(--border);border-radius:9px;background:var(--surface);color:var(--text-secondary);font-size:17px}
#demo-clock{font-variant-numeric:tabular-nums}
.notification:empty{display:none}
.notification:not(:empty){margin-bottom:18px;padding:13px 16px;border:1px solid var(--disabled);border-radius:9px;background:var(--success-bg);color:var(--brand-primary);font-size:17px}
.stop-banner{margin-bottom:20px;padding:18px 20px;border:2px solid var(--error);border-radius:11px;background:var(--error-bg);color:var(--error);font-size:17px}
.stop-banner strong{font-size:21px}
.stop-banner p{margin:6px 0 15px}
.modal-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.modal-heading h2{flex:1}
.modal-heading button{flex:none}
#mfa-code{max-width:330px;margin:9px auto 0;font-size:27px;font-weight:700;text-align:center;letter-spacing:.35em;padding-left:calc(13px + .35em);font-variant-numeric:tabular-nums}
#mfa-feedback,#secret-feedback{font-size:17px;line-height:1.75;color:var(--brand-primary);margin-top:12px}
.demo-qr-placeholder{width:190px;height:190px;max-width:100%;margin:19px auto 15px;border:3px dashed var(--disabled);border-radius:12px;background:var(--bg);color:var(--text-secondary);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:14px;gap:4px;font-size:17px}
.demo-qr-placeholder strong{font-size:32px;font-weight:750}
.demo-qr-placeholder span{font-size:17px}
.secret-value{display:block;width:100%;padding:14px 15px;margin:16px 0;border:1px solid var(--border);border-radius:9px;background:var(--bg);font:17px/1.75 ui-monospace,Consolas,monospace;word-break:break-all;overflow-wrap:anywhere}
.users-security{margin-bottom:18px}
.users-security>.note{margin-top:14px;margin-bottom:10px}
.users-tabs{margin-top:18px}
.users-content>.card,.users-content>.note{margin-bottom:18px}
.users-person-list{display:grid;gap:16px}
.users-person-list>.row{justify-content:space-between}
.person-card,.agent-card{display:block}
.person-card>p,.agent-card>p{margin:8px 0}
.users-value-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;border-bottom:1px solid var(--border);padding:10px 0;font-size:17px}
.users-value-row>span{flex:1}
.users-value-row>strong{font-weight:600;text-align:right;min-width:0;overflow-wrap:anywhere}
.users-value-row:last-child{border-bottom:0}
.users-grant,.users-key{padding:13px 15px;border:1px solid var(--border);border-radius:9px;background:var(--bg);margin-top:13px}
.users-grant>strong{font-size:17px}
.users-key-list{margin-top:16px}
.users-key-list>h4{font-size:17px}
.users-key-list p{font-size:17px}
.users-agent-grid{margin-top:18px}
.users-agent-portrait{float:right;max-width:82px;margin:0 0 10px 10px}
.users-agent-portrait img{height:118px;width:78px;object-fit:contain}
.agent-card::after,.ai-intro::after{content:"";display:table;clear:both}
.agent-card>.toolbar{margin-top:18px;margin-bottom:0;clear:both}
.agent-card>.toolbar>button{flex:1}
.users-add-panel>.warning{margin-top:14px}
.users-steps{list-style:none;padding:0;margin:18px 0;display:flex;flex-wrap:wrap;gap:8px;counter-reset:person-step}
.users-steps li{counter-increment:person-step;padding:7px 10px;background:var(--bg);border:1px solid var(--border);border-radius:7px;font-size:17px;line-height:1.75}
.users-steps li::before{content:counter(person-step)". ";font-weight:700}
.users-steps li[aria-current="step"]{border-color:var(--brand-primary);background:var(--success-bg);color:var(--brand-primary);font-weight:700}
.users-person-form .form-grid{margin-top:14px}
.users-person-form .form-grid>.muted{grid-column:1/-1}
.users-form-actions{margin:20px 0 14px}
.users-form-actions>button{flex:1}
.users-empty .muted{margin-top:8px}
.users-org-grid,.users-roles-grid{margin-top:18px}
.users-room-image{height:240px;width:100%;object-fit:contain;margin:12px 0}
.users-org-card>.warning{margin-top:15px}
.users-positions{padding-left:22px;margin:8px 0 0;font-size:17px}
.users-role-card>.note{margin-top:13px;margin-bottom:14px}
.users-role-card>.warning{margin-top:13px}
.ai-card{margin-bottom:20px}
.ai-card>h2{margin-bottom:9px}
.ai-card>.note,.ai-card>.warning{margin-top:15px}
.ai-card>button{margin-top:13px;margin-right:9px}
.ai-intro>.row{margin:14px 0}
.ai-guide-portrait{float:right;width:82px;height:124px;object-fit:contain;margin:0 0 12px 20px}
.ai-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}
.ai-metrics .stat>h3{font-size:17px;color:var(--text-secondary);font-weight:600}
.ai-metrics .stat .stat-value{font-size:31px;line-height:1.6;display:block;color:var(--text-primary)}
.ai-metrics .stat>p{font-size:17px}
.ai-cost-tabs{margin-top:18px;margin-bottom:14px}
.ai-budget-list{margin-top:18px}
.budget-item{padding:17px;border:1px solid var(--border);border-radius:10px;background:var(--bg);min-width:0}
.budget-item.warning{border-color:var(--brand-accent);background:var(--warning-bg)}
.budget-item>.row{justify-content:space-between}
.budget-amount{font-size:17px;margin-top:13px}
.warning-text{font-size:17px;color:var(--brand-accent-text)}
progress.progress{appearance:none;-webkit-appearance:none;width:100%;height:15px;border:0;border-radius:999px;overflow:hidden;background:var(--disabled);color:var(--brand-field);margin:15px 0}
progress.progress::-webkit-progress-bar{background:var(--disabled);border-radius:999px}
progress.progress::-webkit-progress-value{background:var(--brand-field);border-radius:999px}
progress.progress::-moz-progress-bar{background:var(--brand-field);border-radius:999px}
.budget-item.warning progress.progress::-webkit-progress-value{background:var(--error)}
.budget-item.warning progress.progress::-moz-progress-bar{background:var(--error)}
.ai-budget-form{margin-top:22px;padding-top:20px;border-top:1px solid var(--border)}
.ai-budget-form>h3,.ai-budget-form>.field-help{grid-column:1/-1}
.ai-budget-form>.field-help{margin-top:0}
.ai-budget-form>button{align-self:end}
.ai-security-grid{margin-bottom:2px}
.ai-security-grid .cost-table{min-width:580px}
@media(max-width:850px){
  .header-status{margin-left:0;flex:1 1 100%}
  .ai-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .users-agent-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
  .header-status{font-size:17px;justify-content:flex-start}
  .topbar .header-status{flex-basis:100%;margin:0}
  .demo-controls .check-label{flex-basis:100%}
  .status-strip{display:grid;grid-template-columns:1fr;padding:13px 14px;gap:6px;font-size:17px}
  .stop-banner{padding:16px}
  .stop-banner strong{font-size:20px}
  .stop-banner>.button{width:100%}
  .modal-heading{flex-wrap:wrap}
  .modal-heading h2{min-width:170px}
  .users-value-row{align-items:flex-start;flex-wrap:wrap;gap:3px}
  .users-value-row>strong{text-align:left}
  .users-person-list>.row{gap:10px}
  .users-grant,.users-key{padding:12px}
  .users-steps{display:grid;grid-template-columns:1fr;margin:16px 0}
  .users-form-actions{display:grid;grid-template-columns:1fr 1fr}
  .users-agent-grid{grid-template-columns:1fr}
  .users-agent-portrait{width:72px}
  .users-agent-portrait img{width:72px;height:108px}
  .users-room-image{height:225px}
  .ai-metrics{grid-template-columns:1fr}
  .ai-guide-portrait{width:70px;height:108px;margin-left:13px}
  .ai-card>button{display:flex;width:100%;margin-right:0}
  .ai-card{margin-bottom:16px}
  .budget-item{padding:14px}
  .budget-item>.row{align-items:flex-start}
  .ai-budget-form>button{width:100%}
  .demo-qr-placeholder{width:180px;height:180px}
  #mfa-code{max-width:100%;letter-spacing:.3em;padding-left:calc(13px + .3em)}
}


/* Root-rendered campus, document and work cards. */
#page-content>.card,#page-content>.grid-2,#page-content>.grid-3{margin-bottom:22px}
.card>.grid-2,.card>.grid-3{margin-top:18px}
.card>.toolbar{margin-top:17px}
.card>.form-grid+button{margin-top:18px}
.department-card>.row{justify-content:space-between;gap:8px}
.department-card>.row h3{font-size:20px}
.department-card>p{font-size:17px;line-height:1.75}
.department-card>p:not(.muted){font-weight:650;margin:9px 0 2px}
img.team-sprite{object-fit:contain;object-position:center bottom;filter:drop-shadow(0 2px 2px #1c382b15);transform-origin:center bottom}
img.team-sprite[data-active="true"]{animation:campus-breathe 4s ease-in-out infinite}
.is-paused img.team-sprite{animation-play-state:paused}
.agent-portrait{height:108px;width:73px;object-fit:contain;object-position:center bottom;float:right;margin:0 0 10px 12px}
.doc-effect-label{font-size:17px;font-weight:700;color:var(--brand-primary);margin-top:17px}
.doc-title{font-size:17px;color:var(--text-secondary);margin-top:7px}
.doc-card>label{display:block;font-size:17px;font-weight:700;margin:16px 0 6px}
.check-label,.doc-card>label.check-label{display:flex;align-items:center;gap:10px;min-height:52px;font-weight:500}
.doc-card[data-kind="spend"] .doc-kind,.doc-card[data-kind="price"] .doc-kind,.doc-card[data-kind="contract"] .doc-kind,.doc-card[data-kind="vendor"] .doc-kind{background:var(--warning-bg);color:var(--brand-accent-text);border-color:var(--brand-accent)}
.doc-card[data-kind="delete"] .doc-kind,.doc-card[data-kind="legal"] .doc-kind{background:var(--error-bg);color:var(--error);border-color:var(--error)}
.line-disagreed .badge{background:var(--error-bg);color:var(--error);border-color:var(--error)}
.doc-card .report-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin:15px 0}
.report-grid>p{padding:14px 15px;background:var(--bg);border:1px solid var(--border);border-radius:9px;font-size:17px;line-height:1.75}
.doc-card>.locked-badge{margin-top:13px;font-size:17px}
.work-card>h3{margin-top:12px;font-size:20px}
.work-card>button{margin-top:14px;width:100%}
.work-card .row{gap:7px}
#work-detail>.work-card{background:var(--campus-ivory)}
#work-detail>h3{margin-top:20px;margin-bottom:8px}
#work-detail>ul{padding-left:23px;margin:10px 0 19px}
#department-detail>.note{margin:18px 0}
#department-detail>.button{margin-top:15px}
@keyframes campus-breathe{0%,100%{transform:translate(-50%,-100%) translateY(0)}50%{transform:translate(-50%,-100%) translateY(-1.5px)}}
@media(max-width:600px){
  #page-content>.card,#page-content>.grid-2,#page-content>.grid-3{margin-bottom:17px}
  .department-card>.row h3{font-size:21px}
  .doc-card .report-grid{grid-template-columns:1fr;gap:10px}
  .department-card>.row .badge{font-size:17px}
  .doc-effect-label{margin-top:16px}
}
/* Keep the active navigation readable while the pointer remains over it. */
.main-nav>[aria-current="page"]:hover:not(:disabled){background:var(--brand-primary);color:var(--text-on-brand);border-color:var(--brand-primary)}

/* ===== ZF-live (2026-11-03) 관리센터 연결용 추가 — 디자인 규칙(본문 17px·버튼 52px·토큰 색)을 그대로 따른다 ===== */
/* 관리센터 공통 상단 줄(hub.js bar) · 열 수 없는 화면 안내(hub.js deny) — office.css 와 같은 모양 */
.hub-bar{background:var(--brand-primary);color:var(--text-on-brand)}
.hub-bar:empty{display:none}
.hub-bar .in{max-width:1180px;margin:auto;padding:10px 16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.hub-bar .home{display:flex;align-items:center;gap:10px;color:var(--text-on-brand);text-decoration:none;font-weight:800;font-size:19px}
.hub-bar .mark{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--text-on-brand);border-radius:10px;color:var(--brand-accent)}
.hub-bar .here{opacity:.9}
.hub-bar .sp{flex:1}
.hub-bar .who{font-size:17px;opacity:.95;text-align:right;line-height:1.4}
.hub-bar button{min-height:52px;background:transparent;color:var(--text-on-brand);border-color:var(--text-on-brand);padding:6px 14px}
.hub-bar button:hover:not(:disabled){background:transparent;border-color:var(--brand-accent);color:var(--text-on-brand)}
#app>.wrap{max-width:1180px;margin:auto;padding:28px 16px 64px}
#app>.wrap .card h2{margin:0 0 8px}
/* 화면 머리 조작(움직임 줄이기·새로 고침) — 시연 조작 묶음을 뺀 자리 */
.page-controls{display:flex;align-items:center;gap:13px;flex-wrap:wrap}
.page-controls .check-label{min-height:52px}
/* 2단계 인증 등록 QR(Supabase Auth 가 만든 SVG 주소) */
.mfa-qr{display:block;width:190px;height:190px;max-width:100%;margin:12px 0;background:var(--surface);border:1px solid var(--border);border-radius:10px}
/* 업무 추가(실제 저장) */
details.add-work{margin-top:16px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
details.add-work>form{padding:16px}
details.add-work>form>.button{margin-top:12px}
@media(max-width:760px){.hub-bar .who{display:none}}
/* 본문으로 건너뛰기: 초점이 없을 때는 잘라서 숨긴다(스크롤 위치·전체 화면 캡처와 관계없이 보이지 않게).
   Tab 으로 초점이 오면 보이는 화면 왼쪽 위에 나타난다 */
.skip-link:not(:focus){top:0;left:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.skip-link:focus{position:fixed;top:12px;left:18px;z-index:100;width:auto;height:auto;clip:auto;clip-path:none;overflow:visible}
/* ZF-live 066_4 업무 지시 칸 · 대표 지시 원문 · 담당 바꾸기 (V3 그림체 토큰 그대로 — 본문 17px · 행간 1.75 · 단추 52px) */
.directive-form{display:grid;gap:14px;margin-bottom:18px}
.directive-form input[type="text"]{min-height:52px}
.directive-form>.button{justify-self:start;min-width:180px}
details.directive-more,details.reassign{border:1px solid var(--border);border-radius:10px;background:var(--surface)}
details.directive-more>.form-grid,details.reassign>form{padding:16px}
details.reassign{margin-top:16px}
details.reassign>form>.button{margin-top:4px}
.directive-list{display:grid;gap:0}
.directive-item{display:grid;gap:6px;padding:14px 0;border-top:1px solid var(--border);min-width:0}
.directive-item:first-child{border-top:0;padding-top:4px}
.directive-item>.button{justify-self:start}
.directive-item .row>.warning{margin:0;flex:1 1 220px}
.directive-body{font-weight:650;color:var(--text-primary);overflow-wrap:anywhere}
.directive-quote{margin:8px 0 0;padding:12px 16px;border-left:4px solid var(--brand-accent);background:var(--bg);border-radius:0 10px 10px 0}
.directive-quote>p{margin:2px 0}
.directive-links{display:flex;flex-wrap:wrap;gap:4px 12px;margin:2px 0;font-size:.875rem}
.directive-links a{color:var(--brand-field);text-decoration:underline;overflow-wrap:anywhere;min-height:24px;display:inline-flex;align-items:center}
@media(max-width:600px){.directive-form>.button{justify-self:stretch;width:100%}.directive-item>.button{justify-self:stretch}}
/* ZF-live 078 회사 전경 두 칸 (2026-11-06 대표 「세로로 길어서 사무실을 보는데 한참을 내려야」)
   왼쪽 = 사무실(부서 8칸 · 첫 화면에 두 줄이 보이게 장면 높이를 줄임) → 지금 이어지는 업무 · 오른쪽 = 업무 지시 → 결재 차례 → 최근 지시.
   1100px 보다 좁으면 한 줄: 업무 지시 → 결재 차례 → 최근 지시(3건) → 사무실 → 지금 이어지는 업무(보이는 순서 = 읽는 순서). 시니어 기준(글 17px · 단추 52px)은 그대로 */
body[data-page="campus"] .page-heading{margin-bottom:10px}
body[data-page="campus"] .page-heading .eyebrow{display:none}
body[data-page="campus"] .page-heading>div:first-child{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 16px}
body[data-page="campus"] #page-title{font-size:28px;line-height:1.4}
body[data-page="campus"] .page-heading p{margin-top:0}
body[data-page="campus"] .status-strip{padding:7px 16px;margin-bottom:12px}
.campus-layout{display:grid;grid-template-columns:minmax(0,1fr) clamp(320px,27vw,390px);gap:18px;align-items:start}
.campus-main{grid-column:1;grid-row:1;min-width:0;container-type:inline-size;container-name:campus}
.campus-main>.card+.card{margin-top:16px}
.campus-rail{grid-column:2;grid-row:1;display:flex;flex-direction:column;gap:12px;min-width:0}
.campus-rail>.card{padding:16px 18px}
.campus-rail>.card>h2,.campus-rail .section-heading h2{font-size:21px;line-height:1.45}
.campus-rail .card>.section-heading{margin-bottom:10px}
.campus-rail .section-heading p{margin-top:2px}
/* 사무실 칸 — 제목 옆에 숫자 한 줄 */
.campus-office{padding:18px 20px}
.campus-office>.section-heading{flex-wrap:wrap;gap:8px 16px;margin-bottom:0}
.campus-facts{display:flex;flex-wrap:wrap;gap:8px;margin:0}
.campus-facts>div{display:flex;align-items:baseline;gap:8px;padding:4px 12px;border:1px solid var(--border);border-radius:999px;background:var(--bg)}
.campus-facts dt{font-size:17px;color:var(--text-secondary)}
.campus-facts dd{margin:0;font-size:17px;font-weight:750;color:var(--text-primary)}
.campus-office .company-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:12px}
.campus-office .department-card{display:grid;align-content:start;justify-content:stretch;justify-items:stretch;padding:9px 12px 8px}
.campus-office .department-card>.row h3{font-size:19px}
.campus-office .department-card>.row .badge{padding:1px 8px}
.campus-office .dept-scene{height:100px;margin:0 -4px 2px}
.campus-office .team-sprite{width:40px;height:60px}
.campus-office .department-card>p{line-height:1.5}
.campus-office .department-card>p:not(.muted){margin:2px 0 0}
@container campus (max-width:760px){.campus-office .company-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@container campus (max-width:520px){.campus-office .company-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.campus-office .dept-scene{height:140px}}
/* 오른쪽 칸: 업무 지시(입력 · 단추 한 줄씩) */
#directive-card.is-compact .directive-form{gap:10px;margin-bottom:8px}
#directive-card.is-compact .directive-form>.button{justify-self:stretch;width:100%;min-width:0}
#directive-card.is-compact>p.muted{font-size:17px;line-height:1.6;margin-top:6px}
/* 오른쪽 칸: 최근 지시(짧게) · 결재 차례 / 왼쪽 아래: 지금 이어지는 업무(넓으면 두 줄씩) — 한 줄씩 누르는 목록 */
.rail-approval{border-color:var(--brand-accent)}
.rail-approval>.button,.rail-recent>.button{width:100%;margin-top:10px}
.campus-work-card>.button{margin-top:12px}
.rail-recent .directive-item{padding:11px 0;grid-template-columns:auto auto minmax(0,1fr);gap:6px 8px}
.rail-recent .directive-item>*{grid-column:1/-1}
.rail-recent .directive-item>.button{grid-column:auto;justify-self:start}
.rail-list{display:grid;gap:8px}
.rail-approval .rail-list{margin-top:8px}
@container campus (min-width:700px){.work-rows{grid-template-columns:repeat(2,minmax(0,1fr))}}
.rail-row,button.work-card.work-row{display:grid;justify-items:start;justify-content:stretch;align-content:start;gap:4px;width:100%;min-height:52px;margin:0;padding:10px 13px;text-align:left;font:inherit;color:var(--text-primary);background:var(--surface);border:1px solid var(--border);border-radius:11px;cursor:pointer}
.rail-row:hover,button.work-card.work-row:hover{background:var(--success-bg);border-color:var(--brand-field)}
.rail-row:focus-visible,button.work-card.work-row:focus-visible{outline:3px solid var(--brand-accent);outline-offset:2px}
.rail-row>strong,.work-row>strong{font-size:17px;line-height:1.5;font-weight:700;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rail-row>span,.work-row-meta{font-size:17px;line-height:1.5;color:var(--text-secondary);overflow-wrap:anywhere}
.work-row>.row{gap:6px;flex-wrap:wrap}
@media(max-width:1099px){
  .campus-layout{grid-template-columns:minmax(0,1fr)}
  .campus-rail,.campus-main{grid-column:1;grid-row:auto}
  .rail-recent .directive-item:nth-child(n+4){display:none}
}

/* ZF-live 085 (2026-11-09 · 묶음 D): 통일 보고 렌더(doc-view.js) — 결재함·업무·보고 같은 모양. 토큰은 위 :root 그대로(새 토큰 없음) · 375px 부터 */
.doc-view{margin:14px 0 0;padding:22px;border:1px solid var(--border);border-radius:12px;background:var(--surface);min-width:0}
.doc-view-head{border-bottom:3px solid var(--brand-primary);padding-bottom:10px;margin-bottom:14px}
.doc-view-brand{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 14px;color:var(--text-secondary);font-size:15px}
.doc-view-brand strong{color:var(--brand-primary);font-size:17px;letter-spacing:.04em}
.doc-view-title{margin:6px 0 10px;font-size:22px;line-height:1.4;color:var(--brand-primary)}
.doc-view-meta{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;margin:0;font-size:15px;color:var(--text-secondary)}
.doc-view-meta dt{font-weight:700;color:var(--text-primary)}.doc-view-meta dd{margin:0}
@media (min-width:720px){.doc-view-meta{grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr)}}
.doc-view-flags{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.doc-view .badge.tone-warning{background:var(--warning-bg);border-color:var(--brand-accent);color:var(--brand-accent-text)}
.doc-view .badge.tone-ok{background:var(--success-bg);color:var(--brand-primary)}
.doc-view .badge.basis-fact{background:var(--success-bg);color:var(--brand-primary)}
.doc-view .badge.basis-estimate{background:var(--warning-bg);color:var(--brand-accent-text);border-color:var(--brand-accent)}
.doc-view .badge.basis-assumption{background:var(--error-bg);color:var(--error);border-color:var(--error)}
.doc-view .badge.card-n{background:var(--brand-primary);color:var(--text-on-brand);border-color:var(--brand-primary)}
.doc-view-section{margin:0 0 14px}.doc-view-section h4{margin:0 0 4px;color:var(--brand-primary);border-left:4px solid var(--brand-field);padding-left:9px}
.doc-view-section p{margin:0 0 3px}.doc-empty{font-style:normal}
.doc-view-table{overflow-x:auto;margin:6px 0 14px}.doc-view-table table{width:100%;min-width:480px;border-collapse:collapse;font-size:16px}
.doc-view-table th{background:var(--brand-primary);color:var(--text-on-brand);text-align:left;padding:8px 10px;font-weight:650;white-space:nowrap}
.doc-view-table td{border-bottom:1px solid var(--border);padding:8px 10px;vertical-align:top}.doc-view-table td p{margin:0}
.doc-view-lines{margin:0;padding-left:20px}
.doc-view-cards{margin-top:14px;border-top:1px solid var(--border);padding-top:10px}.doc-view-cards h4{margin:0 0 6px;color:var(--brand-primary)}
.doc-view-footnotes{margin:0;padding:0;list-style:none}.doc-view-footnotes li{margin:0 0 12px;padding:10px 12px;border:1px solid var(--border);border-radius:9px;background:var(--bg)}
.doc-view-claim{margin:4px 0;font-weight:650;overflow-wrap:anywhere}.doc-view-cardmeta{margin:0;font-size:15px}
.doc-view-footnotes .button.ghost{min-height:40px;padding:4px 10px;margin-top:4px}
.doc-view-foot{margin-top:16px;padding-top:8px;border-top:1px solid var(--border);font-size:14px;color:var(--text-secondary)}
.doc-view-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:12px 0 0}.doc-view-actions .muted{font-size:15px}
.doc-render-box{margin-top:12px}.doc-render-box .note{margin:8px 0 0}
@media print{.doc-view-actions,.doc-view-footnotes .button{display:none}}

/* 086 (2026-11-09 · 묶음 E) 사람 직원 권한 조정 · 명함 올리기 — zf-design 토큰 재사용(새 토큰 없음) */
.users-pane-bar{margin:0 0 6px}
.users-person-actions{margin-top:14px;margin-bottom:0}
.perm-check-table{margin:18px 0 12px}
.perm-check-table caption{text-align:left;font-weight:700;font-size:17px;padding:0 0 10px}
.perm-check-table th{width:28%;text-align:left;vertical-align:top;padding:12px 10px 12px 0;border-bottom:1px solid var(--border);font-weight:700}
.perm-check-table td{padding:12px 0;border-bottom:1px solid var(--border)}
.perm-radios,.perm-checks{display:flex;flex-wrap:wrap;gap:8px 18px}
.perm-radios .check-label,.perm-checks .check-label{min-height:44px;display:inline-flex;align-items:center;gap:8px}
.perm-check-table select[multiple]{width:100%;margin-top:10px;min-height:120px}
.perm-check-table input[type="number"],.perm-check-table input[type="date"]{margin-top:10px;max-width:260px}
.perm-tpl-perms{grid-column:1/-1;margin:0}
.perm-preview{display:grid;gap:10px;padding:14px 15px;border:1px solid var(--border);border-radius:9px;background:var(--bg);margin:8px 0 14px}
.perm-preview-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.perm-preview-row>strong{min-width:64px}
.card-item{margin-top:14px}
.cards-xlsx{margin-top:14px}
.cards-xlsx .toolbar{margin-top:8px}
.cards-search{display:flex;gap:8px;align-items:center;margin:8px 0}
.cards-search input{flex:1;min-width:0}
.users-cards-panel .check-label{display:flex;align-items:center;gap:8px;min-height:44px;margin:8px 0}
@media (max-width:720px){.perm-check-table th,.perm-check-table td{display:block;width:auto;border-bottom:0;padding:8px 0}.perm-check-table tr{display:block;border-bottom:1px solid var(--border);padding:6px 0}}

/* 088 (2026-11-09 · 묶음 G) 명함철 전용 보기 — 명함첩 격자 · 검색 · 칩 · 색인 · 슬라이드. zf-design 토큰 재사용(새 토큰 없음) · 375~1280 */
.cards-book{position:relative;margin-top:12px}
.cards-book-head{margin-bottom:14px}
.cards-book-head h2{margin:0}
.cards-book-bar{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:14px;align-items:end;margin-bottom:12px}
.cards-book-bar .field{display:grid;gap:6px;min-width:0}
.cards-book-bar label{font-weight:600}
.cards-book-search input{width:100%}
.cards-book-index{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px;padding:10px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.cards-book-facets{display:grid;gap:8px;margin:0 0 14px}
.chip-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.chip-label{font-weight:700;color:var(--text-secondary);min-width:40px;font-size:15px}
.chip{min-height:40px;min-width:40px;padding:4px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-primary);font-size:15px;font-weight:500;line-height:1.5}
.chip.idx{min-width:40px;padding:4px 8px;font-weight:600}
.chip.on,.chip[aria-pressed="true"]{border-color:var(--brand-primary);background:var(--brand-primary);color:var(--text-on-brand)}
.chip:disabled{opacity:.35}
.cards-book-results{min-height:120px}
.cards-book-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;align-items:stretch;list-style:none;margin:0;padding:0}
.cards-book-cell{min-width:0;display:grid}
.card-tile{display:grid;gap:6px;align-content:start;text-align:left;width:100%;min-height:148px;padding:16px 16px 14px;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:var(--shadow);cursor:pointer;position:relative}
.card-tile::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:4px;border-radius:0 4px 4px 0;background:var(--brand-field);opacity:.85}
.card-tile:hover:not(:disabled){border-color:var(--brand-field);background:var(--surface)}
.card-tile.on{border-color:var(--brand-primary);box-shadow:0 0 0 2px var(--brand-primary) inset}
.card-tile-head{display:flex;justify-content:space-between;gap:8px;align-items:start;min-width:0}
.card-tile-name{font-size:21px;line-height:1.4;letter-spacing:-.3px;color:var(--brand-primary);min-width:0;overflow-wrap:anywhere}
.card-tile-head .badge{font-size:14px;padding:2px 8px;flex:none}
.card-tile-sub{color:var(--text-primary);font-size:16px;line-height:1.5;min-width:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.card-tile-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.card-tile-meta .badge{font-size:14px;padding:2px 8px;line-height:1.5}
.card-tile-contact{font-size:15px;margin-top:auto;padding-top:4px}
.card-tile.skeleton{cursor:default;pointer-events:none}
.card-tile.skeleton .sk{display:block;height:16px;border-radius:6px;background:var(--border);animation:sk 1.1s ease-in-out infinite}
.card-tile.skeleton .sk-1{width:55%;height:22px}.card-tile.skeleton .sk-2{width:80%}.card-tile.skeleton .sk-3{width:40%;margin-top:auto}
@keyframes sk{0%,100%{opacity:1}50%{opacity:.45}}
.cards-book-foot{justify-content:space-between;align-items:center;margin:16px 0 4px}
.cards-book-empty{text-align:left}
.cards-book-empty .button{margin-top:10px}
.cards-undo-bar{align-items:center;padding:10px 14px;border:1px solid var(--brand-accent);background:var(--warning-bg);border-radius:9px;margin-bottom:12px}
.cards-undo-bar>span{flex:1;min-width:160px}
.cards-to-book{margin-top:18px;padding-top:14px;border-top:1px solid var(--border);align-items:center}
.cards-to-book .muted{flex:1;min-width:200px}
.cards-drawer{position:fixed;top:0;right:0;bottom:0;width:min(480px,100vw);background:var(--surface);border-left:1px solid var(--border);box-shadow:-12px 0 40px #1c382b22;padding:22px 22px 32px;overflow-y:auto;z-index:60;transform:translateX(100%);transition:transform .22s ease}
.cards-drawer.open{transform:none}
.cards-drawer[hidden]{display:none!important}
.cards-drawer h3{font-size:24px;color:var(--brand-primary)}
.cards-drawer-sub{color:var(--text-secondary);margin:2px 0 10px}
.cards-drawer .users-value-row{font-size:16px}
.cards-drawer .form-grid{grid-template-columns:minmax(0,1fr)}
.cards-retire-box{margin-top:14px}
.cards-retire-box h4{margin-bottom:6px}
@media(max-width:1200px){.cards-book-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){.cards-book-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cards-book-bar{grid-template-columns:minmax(0,1fr)}.cards-drawer{padding:18px 16px 28px}}
@media(max-width:600px){.cards-book-grid{grid-template-columns:minmax(0,1fr)}.cards-book-head{align-items:flex-start}.card-tile{min-height:0}.chip{min-height:44px}.cards-book-index{gap:4px}.cards-book-foot{flex-direction:column;align-items:stretch}.cards-book-foot .button{width:100%}}
@media(prefers-reduced-motion:reduce){.cards-drawer{transition:none}.card-tile.skeleton .sk{animation:none}}

/* ZF-live 089 (2026-11-09 · 묶음 I): 회사 전경 맨 위 「오늘 결정 n건」 카드 · 사업 라인 타일 — 375~1280 · 단추 44px · 토큰은 위 :root 그대로 */
.loop-card .section-heading{align-items:flex-start}
.loop-list{display:grid;gap:12px;margin-top:6px}
.loop-item{display:grid;gap:10px;padding:14px 15px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.loop-item[data-irreversible="true"]{background:var(--warning-bg);border-color:var(--brand-accent)}
.loop-item-head{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.loop-q{margin:0;font-size:19px;line-height:1.5;font-weight:750;color:var(--text-primary)}
.loop-options{display:grid;gap:8px}
@media (min-width:720px){.loop-options{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}}
.loop-opt{min-height:44px;width:100%;text-align:left;white-space:normal;line-height:1.45}
.loop-opt-static{margin:0;display:grid;gap:3px;padding:10px 12px;border:1px dashed var(--border);border-radius:10px;background:var(--bg)}
.loop-opt-static.is-rec{border-style:solid;border-color:var(--brand-field)}
.loop-item-foot{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.loop-item-foot>.muted{flex:1 1 240px;font-size:16px}
.loop-sub{margin:10px 0 0;font-size:17px;color:var(--brand-accent-text)}
.loop-answer{display:grid;gap:8px;grid-template-columns:1fr;margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}
.loop-answer label{font-size:17px;font-weight:700}
.loop-answer input{min-height:44px;font:inherit;padding:8px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
.loop-answer button{min-height:44px}
@media (min-width:720px){.loop-answer{grid-template-columns:auto minmax(0,1fr) auto;align-items:center}}
.line-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));margin-top:6px}
.line-tile{display:grid;align-content:start;gap:7px;width:100%;min-width:0;min-height:44px;padding:13px 14px;text-align:left;font:inherit;color:var(--text-primary);background:var(--campus-ivory,var(--bg));border:1px solid var(--border);border-radius:13px;cursor:pointer}
.line-tile:hover{border-color:var(--brand-field);background:var(--success-bg)}
.line-tile:focus-visible{outline:3px solid var(--brand-accent);outline-offset:2px}
.line-tile[aria-expanded="true"]{border-color:var(--brand-field);box-shadow:inset 0 0 0 1px var(--brand-field)}
.line-tile h3{margin:0;font-size:18px;line-height:1.4;flex:1 1 auto;min-width:0}
.line-tile>.row{justify-content:space-between;align-items:flex-start;gap:8px}
.line-tile[data-kind="감사"]{background:var(--bg)}
.line-tile[data-kind="광고"]{background:var(--surface)}
.line-kpis{display:grid;gap:4px;margin:0}
.line-kpis>div{display:flex;justify-content:space-between;gap:8px;font-size:16px}
.line-kpis dt{color:var(--text-secondary)}
.line-kpis dd{margin:0;font-weight:700}
.line-meta{margin:0;font-size:16px;line-height:1.5;color:var(--text-primary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.line-tile>.muted{margin:0;font-size:15px}
.line-detail,.line-new{margin-top:12px}
.line-new .grid-2 input,.line-new .grid-2 select{min-height:44px;font:inherit;padding:8px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);width:100%}
@media (max-width:600px){.line-grid{grid-template-columns:1fr}.line-new .grid-2{grid-template-columns:1fr}.loop-item-foot>.button{flex:1 1 45%}}
