:root{--brand:#0176d3;--brand-dark:#014486;--brand-darker:#032d60;--brand-light:#aacbff;--brand-bg:#eef4ff;--bg:#f3f3f3;--card-bg:#ffffff;--border:#e5e5e5;--border-strong:#c9c9c9;--text:#181818;--text-weak:#5c5c5c;--text-faint:#939393;--success:#2e844a;--warning:#dd7a01;--error:#ea001e;--radius:0.5rem;--shadow:0 2px 2px rgba(0,0,0,.05);--shadow-hover:0 2px 8px rgba(0,0,0,.12);--nav-h:3rem;--rail-w:15rem;--ch-1:#0b74d1;--ch-2:#1a7f4b;--ch-3:#c2410c;--ch-4:#7c5cbf;--ch-rest:#d7dee8;--ch-grid:#eceff3}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Malgun Gothic,Apple SD Gothic Neo,sans-serif;background:var(--bg);color:var(--text);font-size:.8125rem;line-height:1.5}a{color:inherit;text-decoration:none}button{cursor:pointer}button,input,select,textarea{font:inherit}.gnb{position:fixed;top:0;left:0;right:0;height:var(--nav-h);background:linear-gradient(90deg,var(--brand-darker),var(--brand-dark));color:#fff;gap:1rem;padding:0 1rem;z-index:100;box-shadow:0 2px 4px rgba(0,0,0,.2)}.gnb,.gnb-logo{display:flex;align-items:center}.gnb-logo{gap:.5rem;font-weight:700;font-size:.95rem;white-space:nowrap}.gnb-logo .logo-mark{width:1.6rem;height:1.6rem;border-radius:.35rem;background:linear-gradient(135deg,#1b96ff,#0176d3);display:grid;place-items:center;font-size:.8rem}.gnb-search{flex:1 1;max-width:30rem;position:relative}.gnb-search input{width:100%;height:2rem;border-radius:1rem;border:none;padding:0 1rem 0 2.2rem;background:rgba(255,255,255,.15);color:#fff;outline:none;transition:background .15s}.gnb-search input::placeholder{color:rgba(255,255,255,.65)}.gnb-search input:focus{background:#fff;color:var(--text)}.gnb-search .search-ic{position:absolute;left:.8rem;top:50%;transform:translateY(-50%);opacity:.7}.gnb-right{gap:.6rem;margin-left:auto}.gnb-btn,.gnb-right{display:flex;align-items:center}.gnb-btn{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);color:#fff;border-radius:var(--radius);padding:.3rem .7rem;font-size:.75rem;gap:.35rem;transition:background .15s}.gnb-btn:hover{background:rgba(255,255,255,.25)}.gnb-btn.active{background:var(--warning);border-color:var(--warning)}.rail{position:fixed;top:var(--nav-h);left:0;bottom:0;width:var(--rail-w);background:var(--card-bg);border-right:1px solid var(--border);padding:.8rem 0;overflow-y:auto;z-index:90}.rail-group{padding:.4rem 1rem .2rem;font-size:.68rem;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em}.rail-group-btn{display:flex;align-items:center;gap:.3rem;width:100%;text-align:left;border:none;background:none;cursor:pointer;margin-top:.35rem;padding-top:.55rem;border-top:1px solid var(--border)}.rail>div:first-child .rail-group-btn{margin-top:0;border-top:none}.rail-group-btn:hover{color:var(--brand-dark)}.rail-group-btn .tri{font-size:.6rem;width:.7rem;color:var(--text-faint)}.rail-group-btn .cnt{margin-left:auto;font-size:.62rem;font-weight:600;color:var(--text-faint);background:var(--bg);border-radius:.6rem;padding:0 .4rem}.rail a{display:flex;align-items:center;gap:.6rem;padding:.5rem 1rem;color:var(--text-weak);font-weight:500;border-left:3px solid transparent;transition:background .1s}.rail a.active,.rail a:hover{background:var(--brand-bg)}.rail a.active{border-left-color:var(--brand);color:var(--brand-dark);font-weight:700}.rail .kbd{margin-left:auto;font-size:.65rem;color:var(--text-faint);border:1px solid var(--border);border-radius:.25rem;padding:0 .3rem}.main{margin-left:var(--rail-w);margin-top:var(--nav-h);padding:1rem;min-height:calc(100vh - var(--nav-h))}.main>*{max-width:92rem;margin-left:0;margin-right:auto}.page-head{display:flex;align-items:center;gap:.8rem;margin-bottom:1rem;flex-wrap:wrap}.page-head h1{font-size:1.15rem;font-weight:700}.page-head .sub{color:var(--text-weak);font-size:.78rem}.page-head .actions{margin-left:auto;display:flex;gap:.5rem}.grid2{grid-template-columns:repeat(2,1fr);grid-gap:1rem}.grid2,.grid3{display:grid;gap:1rem}.grid3{grid-template-columns:repeat(3,1fr);grid-gap:1rem}.grid4{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:1rem;gap:1rem}.card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;transition:box-shadow .15s}a.card:hover{box-shadow:var(--shadow-hover)}.card-head{display:flex;align-items:center;gap:.5rem;padding:.7rem .9rem;border-bottom:1px solid var(--border);font-weight:700;font-size:.82rem}.card-head .ic{width:1.5rem;height:1.5rem;border-radius:.3rem;display:grid;place-items:center;font-size:.75rem;color:#fff;background:var(--brand)}.card-head .more{margin-left:auto;color:var(--brand);font-size:.72rem;font-weight:500}.card-body{padding:.9rem}.card-body.flush{padding:0}.kpi{display:flex;flex-direction:column;gap:.15rem;padding:.9rem .9rem .9rem 1.1rem;position:relative}.kpi:before{content:"";position:absolute;left:.45rem;top:.8rem;bottom:.8rem;width:4px;border-radius:2px;background:var(--accent,transparent)}.kpi .label{font-size:.72rem;color:var(--text-weak);font-weight:600;letter-spacing:.01em}.kpi .value{font-size:1.5rem;font-weight:800;color:var(--brand-darker);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1.15}.kpi .delta{font-size:.7rem}.kpi .delta.up{color:var(--success)}.kpi .delta.warn{color:var(--warning)}.tbl{width:100%;border-collapse:collapse;font-size:.78rem}.tbl-fixed{table-layout:fixed}.tbl th{text-align:left;padding:.5rem .9rem;background:#fafafa;color:var(--text-weak);font-weight:600;white-space:nowrap}.tbl td,.tbl th{border-bottom:1px solid var(--border)}.tbl td{padding:.55rem .9rem}.tbl tr:last-child td{border-bottom:none}.tbl tr:hover td{background:var(--brand-bg)}.btn{border-radius:var(--radius);border:1px solid var(--border-strong);background:#fff;color:var(--brand-dark);padding:.4rem .9rem;font-weight:600;font-size:.78rem;transition:background .12s}.btn:hover{background:var(--brand-bg)}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-dark)}.btn.danger{color:var(--error)}.btn.sm{padding:.2rem .55rem;font-size:.72rem}.btn:disabled{opacity:.5;cursor:not-allowed}.badge{display:inline-block;padding:.1rem .5rem;border-radius:.7rem;font-size:.68rem;font-weight:700}.badge.blue{background:#e7f1fb;color:#0a5eaa}.badge.green{background:#e6f4ec;color:#14663c}.badge.orange{background:#faeee6;color:#9a3412}.badge.red{background:#feefee;color:var(--error)}.badge.gray{background:#eef1f4;color:#4b5563}.badge.purple{background:#f1ecfa;color:#5b3fa0}.field{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.7rem}.field label{font-size:.72rem;font-weight:600;color:var(--text-weak)}.field input,.field select,.field textarea{border:1px solid var(--border-strong);border-radius:var(--radius);padding:.45rem .6rem;outline:none;transition:border-color .12s,box-shadow .12s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);box-shadow:0 0 0 2px rgba(1,118,211,.15)}.kanban{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:.8rem;gap:.8rem;align-items:start}.kb-col{background:#ececec;border-radius:var(--radius);padding:.6rem;min-height:12rem}.kb-col-head{display:flex;align-items:center;gap:.4rem;font-weight:700;font-size:.78rem;padding:0 .2rem .55rem}.kb-col-head .cnt{background:var(--border-strong);border-radius:.7rem;padding:0 .45rem;font-size:.68rem}.kb-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:.6rem .7rem;margin-bottom:.55rem;box-shadow:var(--shadow);cursor:-webkit-grab;cursor:grab;transition:box-shadow .12s}.kb-card:hover{box-shadow:var(--shadow-hover)}.kb-card .t{font-weight:700;font-size:.78rem;margin-bottom:.2rem}.kb-card .d{font-size:.7rem;color:var(--text-weak);margin-bottom:.35rem}.kb-card .foot{display:flex;align-items:center;gap:.4rem}.kb-card .move{margin-left:auto;display:flex;gap:.2rem}.kb-card .move button{border:1px solid var(--border);background:#fafafa;border-radius:.3rem;padding:0 .4rem;font-size:.72rem}.kb-col.drag-over{outline:2px dashed var(--brand);outline-offset:-4px}.masking-on .sensitive{-webkit-user-select:none;-moz-user-select:none;user-select:none}.masking-on .sensitive input,.masking-on .sensitive textarea,.masking-on input.sensitive{-webkit-text-security:disc}.masking-on .sensitive img{filter:blur(14px)}.switch{position:relative;width:2.4rem;height:1.3rem;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.switch .slider{position:absolute;inset:0;border-radius:1rem;background:#ccc;transition:.2s;cursor:pointer}.switch .slider:before{content:"";position:absolute;width:1rem;height:1rem;left:.15rem;top:.15rem;border-radius:50%;background:#fff;transition:.2s}.switch input:checked+.slider{background:var(--brand)}.switch input:checked+.slider:before{transform:translateX(1.1rem)}.notif-dot{position:absolute;top:-2px;right:-2px;width:.55rem;height:.55rem;border-radius:50%;background:var(--error);border:1.5px solid var(--brand-dark)}.li{display:flex;gap:.6rem;padding:.55rem .9rem;border-bottom:1px solid var(--border);align-items:flex-start}.li:last-child{border-bottom:none}.li .t{font-weight:600;font-size:.78rem}.li .d{font-size:.7rem;color:var(--text-weak)}@media (max-width:900px){.rail{transform:translateX(-100%);transition:transform .2s}.rail.open{transform:none;box-shadow:4px 0 12px rgba(0,0,0,.15)}.main{margin-left:0}.grid2,.grid3{grid-template-columns:1fr;gap:.6rem}.grid4{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.grid2>*,.grid3>*,.grid4>*{min-width:0}.kpi .value{font-size:1.15rem}.kpi .label{font-size:.68rem}.kpi .delta{font-size:.62rem}body{font-size:.95rem}.tbl{font-size:.85rem}.tbl td,.tbl th{white-space:nowrap}.badge{font-size:.75rem}.btn.sm{padding:.5rem .75rem}.btn{min-height:2.4rem}input,select,textarea{min-height:2.4rem;font-size:.95rem}.card-body{padding:.7rem}.kanban{grid-template-columns:repeat(4,85vw);overflow-x:auto;scroll-snap-type:x mandatory}.kb-col{scroll-snap-align:center}.gnb-search{display:none}.gnb-btn{white-space:nowrap;flex-shrink:0;padding:.35rem .5rem;font-size:.8rem}.gnb-right{gap:.35rem}}@media (max-width:480px){.gnb-btn .btn-label{display:none}.gnb-logo .logo-text{font-size:.85rem}}.tip{position:relative}.tip:after{content:attr(data-tip);bottom:calc(100% + .45rem);background:#263238;color:#fff;font-size:.7rem;font-weight:500;line-height:1.45;padding:.4rem .6rem;border-radius:.4rem;white-space:pre-line;width:max-content;max-width:15rem;box-shadow:0 4px 14px rgba(0,0,0,.28)}.tip:after,.tip:before{position:absolute;left:50%;transform:translateX(-50%);opacity:0;visibility:hidden;transition:opacity .13s;pointer-events:none;z-index:400}.tip:before{content:"";bottom:calc(100% + .1rem);border:.35rem solid transparent;border-top-color:#263238}.tip:focus-visible:after,.tip:focus-visible:before,.tip:hover:after,.tip:hover:before{opacity:1;visibility:visible}@media (hover:none){.tip:after,.tip:before{display:none}}@media (hover:hover){.tip-inline{display:none}}.tbl thead th{position:-webkit-sticky;position:sticky;top:0;background:var(--surface-alt,#eef4fb);z-index:5}.kb-scroll{overflow:auto;max-height:calc(100vh - 21rem);min-height:20rem;padding-bottom:.3rem}.kb-scroll .kb-col{min-height:100%}.kb-scroll .kb-col-head{position:-webkit-sticky;position:sticky;top:0;z-index:4;background:#ececec;margin:-.6rem -.6rem .1rem;padding:.6rem .8rem .5rem;border-radius:var(--radius) var(--radius) 0 0;box-shadow:0 2px 4px -2px rgba(0,0,0,.28)}@media (max-width:820px){.kb-scroll{max-height:calc(100vh - 16rem)}}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-hover);width:100%;max-width:26rem;padding:1rem 1.2rem;max-height:90vh;overflow-y:auto}.modal h2{font-size:.9rem;margin-bottom:.8rem}.modal .modal-actions{display:flex;gap:.5rem;margin-top:.9rem}.kb-card{cursor:pointer}