:root{--bg: #f5f6f8;--card: #ffffff;--line: #e3e6ea;--text: #1f2430;--muted: #7a828e;--primary: #3b5bdb;--primary-d: #2f49b0;--ok: #2f9e44;--danger: #e03131;--warn: #f59f00}*{box-sizing:border-box}body{margin:0;font-family:Pretendard,-apple-system,Segoe UI,Malgun Gothic,sans-serif;background:var(--bg);color:var(--text);font-size:14px}.container{max-width:1100px;margin:0 auto;padding:24px 20px}.shell{display:flex;min-height:100vh}.content{flex:1;min-width:0}.sidebar{width:232px;flex:0 0 232px;background:var(--card);border-right:1px solid var(--line);position:sticky;top:0;height:100vh;z-index:10;display:flex;flex-direction:column}.sb-brand{display:flex;align-items:center;height:56px;padding:0 18px;border-bottom:1px solid var(--line);text-decoration:none;flex:0 0 auto}.app-logo{height:28px;width:auto;display:block}.sb-nav{flex:1;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:2px}.sb-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:6px;color:var(--text);text-decoration:none;font-weight:500;font-size:14px;line-height:1.2}.sb-item:hover{background:#f1f3f5}.sb-item.active{color:var(--primary);background:#eef1fd}.sb-icon{width:20px;text-align:center;font-size:15px;flex:0 0 20px}.sb-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sb-item .nav-badge{margin-left:0}.sb-group{margin-top:10px}.sb-group-head{display:flex;align-items:center;gap:6px;width:100%;padding:6px 10px;border:none;background:none;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.04em;cursor:pointer;border-radius:6px;text-align:left}.sb-group-head:hover{background:#f1f3f5;color:var(--text)}.sb-chev{display:inline-block;width:10px;font-size:10px;transition:transform .15s}.sb-group.collapsed .sb-chev{transform:rotate(-90deg)}.sb-group-body{display:flex;flex-direction:column;gap:2px}.sb-group.collapsed .sb-group-body{display:none}.sb-group.depth-1{margin:4px 0 2px}.sb-group.depth-1 .sb-group-head{font-size:11px;font-weight:600;letter-spacing:0;padding:4px 10px 4px 12px}.sb-group.depth-1 .sb-group-body{margin-left:16px;padding-left:8px;border-left:2px solid var(--line)}.sb-group.depth-1 .sb-item{padding:6px 8px;font-size:13px}.sb-user{border-top:1px solid var(--line);padding:10px 12px;position:relative;flex:0 0 auto}.sb-user-btn{width:100%;display:flex;align-items:center;gap:10px;padding:6px 8px;border:none;background:none;text-align:left;border-radius:6px;color:var(--text)}.sb-user-btn:hover{background:#f1f3f5}.sb-avatar{width:30px;height:30px;border-radius:50%;flex:0 0 30px;background:#eef1fd;color:var(--primary);display:grid;place-items:center;font-weight:700}.sb-user-meta{display:flex;flex-direction:column;line-height:1.25;min-width:0;flex:1}.sb-user-meta b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sb-user-meta span{font-size:11px;color:var(--muted)}.sb-user-caret{color:var(--muted);font-size:11px}.sb-user .user-menu{left:12px;right:12px;top:auto;bottom:calc(100% - 4px)}.mobilebar,.sb-backdrop{display:none}@media (max-width: 800px){.sidebar{position:fixed;left:0;top:0;transform:translate(-100%);transition:transform .2s ease}.sidebar.open{transform:none;box-shadow:0 0 40px #00000040}.sb-backdrop.show{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:9}.mobilebar{display:flex;align-items:center;gap:10px;height:52px;padding:0 10px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.mobilebar .brand{display:flex;align-items:center;text-decoration:none}.mobilebar .app-logo{height:26px}.hamburger{border:none;background:none;font-size:20px;padding:4px 8px;line-height:1}.container{padding:16px 12px}}.nav-badge{display:inline-block;min-width:16px;height:16px;padding:0 5px;margin-left:5px;border-radius:9px;background:var(--danger);color:#fff;font-size:11px;font-weight:700;line-height:16px;text-align:center;vertical-align:middle}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:12px}h1,h2{margin:0 0 4px}.muted{color:var(--muted)}.small{font-size:12px}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:20px}.form label,.login label{display:block;margin-bottom:12px;font-weight:500}input,select,textarea{width:100%;margin-top:4px;padding:9px 10px;border:1px solid var(--line);border-radius:6px;font-size:14px;font-family:inherit;background:#fff}.range input,.range select{width:auto;margin:0}.range{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}button,.btn{cursor:pointer;border:1px solid var(--line);background:#fff;padding:8px 14px;border-radius:6px;font-size:14px;font-weight:500;color:var(--text)}button:hover{background:#f1f3f5}.primary,button.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.primary:hover{background:var(--primary-d)}.btn{text-decoration:none;display:inline-block}button.ok{background:var(--ok);color:#fff;border-color:var(--ok)}button.danger{background:var(--danger);color:#fff;border-color:var(--danger)}button:disabled{opacity:.6;cursor:default}.link{background:none;border:none;color:var(--primary);text-decoration:none;cursor:pointer;padding:0}button.sm{padding:4px 10px;font-size:12px}.inline-form{display:flex;gap:8px;align-items:center;margin-bottom:16px}.inline-form input{margin:0;width:auto}.inline-form input[type=text]{flex:1}.inline-form button{margin:0}table.grid{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden}.grid th,.grid td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--line)}.grid th{background:#fafbfc;color:var(--muted);font-weight:600;font-size:12px}.grid tr:last-child td{border-bottom:none}.grid tr.warn-row td{background:#fff9db}.actions{display:flex;gap:4px;align-items:center;flex-wrap:nowrap}.actions input{width:84px;margin:0;flex:0 0 84px;padding:6px 8px}.actions button{flex:0 0 auto;white-space:nowrap;padding:6px 9px;font-size:13px}.grid td.nowrap,.grid th.nowrap{white-space:nowrap}.table-wrap{overflow-x:auto}.table-wrap>table.grid{min-width:720px}.grid.compact th,.grid.compact td{padding:9px 8px}.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap}.s-normal{background:#ebfbee;color:var(--ok)}.s-corrected{background:#e7f5ff;color:#1971c2}.s-field_work{background:#fff4e6;color:#e8590c}.s-needs_confirm{background:#fff9db;color:#b08900}.s-absent{background:#fff0f0;color:var(--danger)}.r-pending{background:#fff9db;color:#b08900}.r-approved{background:#ebfbee;color:var(--ok)}.r-rejected{background:#fff0f0;color:var(--danger)}.r-cancel_pending{background:#fff4e6;color:#e8590c}.r-canceled{background:#f1f3f5;color:var(--muted)}.error{color:var(--danger);background:#fff0f0;padding:9px 12px;border-radius:6px;margin:10px 0}.info{color:#1971c2;background:#e7f5ff;padding:9px 12px;border-radius:6px;margin:10px 0}.block{display:block;margin-top:2px;font-weight:400}.row-gap{display:flex;align-items:center;gap:12px}.ok-text{color:var(--ok);font-size:13px}textarea{resize:vertical}.worklog-list{display:flex;flex-direction:column;gap:12px}.worklog-card{padding:16px}.worklog-head{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid var(--line)}.worklog-date{margin-left:auto;color:var(--muted);font-size:13px}.worklog-field{margin-bottom:8px}.worklog-text{white-space:pre-wrap;margin-top:2px}.summary{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}.summary>div{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:10px 16px;display:flex;flex-direction:column;gap:2px;min-width:120px}.summary b{font-size:18px}.summary b.over{color:var(--warn)}.summary.wrap>div{min-width:100px}.grid tr.weekend td{background:#fafbfc}.grid tr.holiday td{background:#fff5f5}.s-holiday{background:#ffe3e3;color:var(--danger)}.wd-end{color:#b08900}td.working{color:var(--ok);font-weight:700}.s-working{background:#ebfbee;color:var(--ok)}.home-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}.home-card{display:flex;flex-direction:column;gap:4px;text-decoration:none;color:var(--text);background:var(--card);border:1px solid var(--line);border-radius:10px;padding:18px;transition:border-color .12s,transform .12s,box-shadow .12s}.home-card:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:0 6px 18px #0000000f}.home-icon{font-size:26px}.home-title{font-weight:700;font-size:15px}.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{border:none;border-radius:0;background:#fff;padding:7px 14px;font-weight:600;border-left:1px solid var(--line)}.seg button:first-child{border-left:none}.seg button.on{background:var(--primary);color:#fff}.seg button.on:hover{background:var(--primary)}.metric-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin:4px 0 20px}.metric-card{text-align:left;display:flex;flex-direction:column;gap:4px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px;transition:border-color .12s,transform .12s,box-shadow .12s;font:inherit;color:var(--text)}.metric-card:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:0 6px 18px #0000000f;background:#fff}.metric-card.on{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary) inset}.metric-card .m-name{font-weight:700;font-size:14px}.metric-card .m-val{font-size:22px;font-weight:700}.metric-card .m-val.night{color:#7048e8}.metric-card .m-val.holiday{color:#c2255c}.metric-card .m-val.holiday_night{color:#9c36b5}.metric-card .m-val.neg{color:var(--danger)}.metric-card .m-work{width:100%;display:flex;flex-direction:column;gap:2px;margin-top:2px}.metric-card .m-work>div{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.metric-card .m-work span{font-size:12px;color:var(--muted)}.metric-card .m-work b{font-size:15px}.metric-card .m-work b.neg{color:var(--danger)}.metric-card.alert{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger) inset;background:#fff5f5}.ann-list{display:flex;flex-direction:column;gap:10px}.ann-item{border-top:1px solid var(--line);padding-top:10px}.ann-item:first-child{border-top:none;padding-top:0}.ann-head{display:flex;align-items:baseline;gap:8px}.ann-meta{margin-left:auto}.ann-body{white-space:pre-wrap;margin-top:4px;font-size:13px}.danger-link{color:var(--danger)}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20}.user-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:21;min-width:140px;padding:4px;background:var(--card);border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 20px #0000001f;display:flex;flex-direction:column}.user-menu button{border:none;background:none;text-align:left;padding:9px 12px;border-radius:6px;color:var(--text)}.user-menu button:hover{background:#f1f3f5}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#0a0e1ead;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px}.modal{width:380px;max-width:100%;box-shadow:0 24px 80px #0508168c}.modal-lg{width:680px;max-height:88vh;overflow-y:auto}.modal-lg textarea{min-height:70px}.login-wrap{min-height:calc(100vh - 48px);display:flex;align-items:center;justify-content:center;position:relative}.login-bg,.login-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.login-bg{background-size:cover;background-position:center;filter:blur(10px) saturate(1.15) brightness(.85);transform:scale(1.06)}.login-scrim{background:radial-gradient(1100px 620px at 72% 18%,rgba(59,91,219,.28),transparent 62%),linear-gradient(135deg,#1c2752cc,#0f142ae6)}.login{width:420px;position:relative;z-index:1;background:#fffffff7;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.55);box-shadow:0 24px 70px #080c1e73}.brand-logo{width:100%;height:auto;display:block;margin:4px 0 22px}.s-annual{background:#e7f5ff;color:#1971c2}.s-monthly{background:#e6fcf5;color:#0ca678}.s-other{background:#f3f0ff;color:#7048e8}.s-half{background:#fff4e6;color:#e8590c}.s-purchase{background:#c5f6fa;color:#0c8599}.s-condolence{background:#f3f0ff;color:#6741d9}.s-trip{background:#e3fafc;color:#0b7285}.leave-bal{background:#f1f5ff;border:1px solid #dbe4ff;border-radius:8px;padding:10px 14px;margin-bottom:12px;display:flex;flex-direction:column;gap:6px}.leave-bal-total{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.leave-bal-total b{font-size:20px}.leave-bal-row{display:flex;align-items:center;gap:4px;flex-wrap:wrap;font-size:13px}.usage-link{font-size:13px;text-decoration:underline dotted}.usage-link b{color:var(--primary)}.pay-corp_card{background:#e7f5ff;color:#1971c2;font-size:10px;padding:1px 6px}.pay-personal{background:#fff4e6;color:#e8590c;font-size:10px;padding:1px 6px}.pay-notes{margin:0;padding-left:16px;font-size:11px;color:var(--muted);line-height:1.5}.pd-draft{background:#f1f3f5;color:var(--muted)}.pd-submitted{background:#fff9db;color:#b08900}.pd-reviewing{background:#e7f5ff;color:#1971c2}.pd-approved{background:#ebfbee;color:var(--ok)}.pd-rejected{background:#fff0f0;color:var(--danger)}.pd-hold{background:#fff4e6;color:#e8590c}.ps-preparing{background:#f1f3f5;color:var(--muted)}.ps-filed{background:#e7f5ff;color:#1971c2}.ps-examining{background:#fff9db;color:#b08900}.ps-registered{background:#ebfbee;color:var(--ok)}.ps-rejected,.ps-abandoned,.ps-expired{background:#fff0f0;color:var(--danger)}.pc-received{background:#fff9db;color:#b08900}.pc-reviewing{background:#e7f5ff;color:#1971c2}.pc-approved{background:#e6fcf5;color:#0ca678}.pc-paid{background:#ebfbee;color:var(--ok)}.pc-disputed{background:#fff0f0;color:var(--danger)}.inventor-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.inventor{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid var(--line);border-radius:8px;font-size:13px;margin:0;font-weight:500;cursor:pointer}.inventor.on{border-color:var(--primary);background:#f1f5ff}.seg .nav-badge{margin-left:5px}.trip-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}.trip-est{position:sticky;top:12px;background:#fafbfc;border:1px solid var(--line);border-radius:10px;padding:12px 14px}.trip-est h4{margin:0 0 6px}.trip-est .grid.mini td{padding:5px 8px}@media (max-width: 900px){.trip-grid{grid-template-columns:1fr}.trip-est{position:static}}.region-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}.region-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:14px;background:#f1f3f5;font-size:12px}.chip button{border:none;background:none;padding:0 2px;color:var(--muted);font-size:13px;line-height:1}.chip button:hover{color:var(--danger);background:none}.as-in_use{background:#ebfbee;color:var(--ok)}.as-stock{background:#e7f5ff;color:#1971c2}.as-repair{background:#fff9db;color:#b08900}.as-disposed{background:#f1f3f5;color:var(--muted)}.as-lost{background:#fff0f0;color:var(--danger)}.asset-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}.asset-card{display:flex;flex-direction:column;text-align:left;padding:0;overflow:hidden;background:var(--card);border:1px solid var(--line);border-radius:10px;color:var(--text);font:inherit}.asset-card.clickable{cursor:pointer;transition:transform .12s,box-shadow .12s,border-color .12s}.asset-card.clickable:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:0 6px 18px #0000000f;background:var(--card)}.asset-thumb{height:140px;background:#f1f3f5;display:grid;place-items:center;overflow:hidden}.asset-thumb img{width:100%;height:100%;object-fit:cover}.asset-thumb-empty{font-size:40px;opacity:.5}.asset-body{padding:10px 12px 12px;display:flex;flex-direction:column;gap:2px}.asset-no{font-weight:700;font-size:13px;color:var(--primary);display:flex;align-items:center;gap:6px}.asset-no .badge{font-size:10px;padding:1px 6px}.asset-name{font-weight:600}.asset-gallery{display:flex;gap:8px;flex-wrap:wrap}.asset-photo{position:relative;width:120px;height:120px;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:#f1f3f5}.asset-photo img{width:100%;height:100%;object-fit:cover;display:block}.asset-photo button{position:absolute;top:4px;right:4px;padding:0 6px;line-height:20px}.asset-photo.add{display:grid;place-items:center;cursor:pointer;color:var(--muted);border-style:dashed}.asset-photo.add:hover{color:var(--primary);border-color:var(--primary)}.r-paid{background:#e6fcf5;color:#0ca678}.warn-late{color:var(--danger);font-weight:600}.items-grid th,.items-grid td{padding:6px 8px}.items-grid input{margin:0;width:100%}button.sm.toggle{padding:2px 7px;line-height:1.2}.ap-detail{padding:4px 2px 8px;overflow-wrap:anywhere;min-width:0}.ap-detail a{overflow-wrap:anywhere}.ap-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 16px;margin-bottom:10px}.ap-grid>div{display:flex;flex-direction:column;gap:1px}.ap-grid span{font-size:12px;color:var(--muted)}.ap-line{margin:4px 0;font-size:13px}.ap-line .muted{margin-right:6px}.decision-note{margin-top:4px;color:var(--muted);max-width:260px;white-space:pre-wrap;word-break:break-word}.decision-note .label{font-weight:600;margin-right:4px}.decision-note.rejected{color:var(--danger)}.ap-sub{font-weight:700;font-size:13px;margin:12px 0 6px}.grid.mini{background:var(--card)}.grid.mini th,.grid.mini td{padding:6px 10px;font-size:13px}.grid.mini tr.hl td{background:#f1f5ff}.type-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:16px}.type-card{display:flex;flex-direction:column;gap:3px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;cursor:pointer;text-align:left;transition:border-color .12s,transform .12s,box-shadow .12s}.type-card:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:0 6px 18px #0000000f;background:var(--card)}.type-card.on{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary) inset;background:#f1f5ff}.type-card .tc-icon{font-size:22px}.type-card .tc-title{font-weight:700;font-size:14px}.grid tr.editing-row td,.grid tr.edit-row td{background:#eef3ff}.att-edit{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.att-edit label{margin:0;display:inline-flex;align-items:center;gap:6px;font-weight:500}.att-edit input{width:auto;margin:0}.b-over{background:#fff0f0;color:var(--danger)}.b-warn{background:#fff9db;color:#b08900}b.over{color:var(--danger)}.grid tr.clickable{cursor:pointer}.grid tr.clickable:hover td{background:#f1f5ff}button.sm.danger-link{color:var(--danger)}.tabs{display:flex;gap:8px;margin-bottom:16px}.tabs button.active{background:var(--primary);color:#fff;border-color:var(--primary)}.leave-summary{margin-top:-6px}.leave-summary>div{border-left:3px solid var(--primary)}.pager{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:16px}.s-holiday_work{background:#fff0f6;color:#c2255c}.night-txt{color:#7048e8}.holiday-txt{color:#c2255c}.holiday-night-txt{color:#9c36b5}.emp-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.emp-grid label.chk{display:flex;align-items:center;gap:8px;align-self:end;margin-bottom:12px}.emp-grid label.chk input{width:auto;margin:0}@media (max-width: 560px){.emp-grid{grid-template-columns:1fr}}.perm-box{border:1px solid var(--line);border-radius:8px;padding:10px 14px 12px;margin:0 0 14px}.perm-box legend{padding:0 6px;font-size:13px;font-weight:600}.perm-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:6px 12px}.perm-list label.chk{display:flex;align-items:center;gap:6px;font-size:14px;margin:0}.perm-list label.chk input{width:auto;margin:0}.att-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.month-nav{display:flex;align-items:center;gap:6px}.month-nav b{min-width:110px;text-align:center;font-size:15px}.month-nav button{padding:6px 10px}.att-range-note{margin:-6px 0 14px;font-size:12px;color:var(--muted);display:flex;gap:14px;flex-wrap:wrap}.att-range-note b{color:var(--text);font-weight:600}.cal{background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden}.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);background:#fafbfc;border-bottom:1px solid var(--line)}.cal-weekdays>div{padding:8px 0;text-align:center;font-size:12px;font-weight:600;color:var(--muted)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr)}.cal-cell{min-height:108px;padding:8px 9px;text-align:left;display:flex;flex-direction:column;gap:3px;border:none;border-right:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:0;background:var(--card);font-size:12px;color:var(--text);cursor:pointer;position:relative}.cal-cell:nth-child(7n){border-right:none}.cal-cell:hover{background:#f5f7ff}.cal-cell.out{background:#fafbfc;color:#c2c7cf;cursor:default}.cal-cell.out:hover{background:#fafbfc}.cal-cell.out .cal-day{color:#c2c7cf;font-weight:500}.cal-cell.weekend{background:#fafbfc}.cal-cell.holiday{background:#fff7f7}.cal-cell.warn{background:#fffbe6}.cal-cell.today{box-shadow:inset 0 0 0 2px var(--primary)}.cal-cell.selected{background:#eef1fd}.cal-cell.today .cal-day{background:var(--primary);color:#fff;border-radius:50%;width:22px;height:22px;display:inline-grid;place-items:center}.cal-head{display:flex;align-items:center;gap:5px;min-height:22px}.cal-day{font-weight:700;font-size:13px}.cal-cell.weekend .cal-day{color:#b08900}.cal-cell.holiday .cal-day{color:var(--danger)}.cal-wd{display:none;color:var(--muted)}.cal-month{font-size:11px;font-weight:700;color:var(--primary);background:#eef1fd;padding:1px 6px;border-radius:10px}.cal-status{margin-left:auto;font-size:10px;padding:1px 6px}.cal-times{color:var(--muted);white-space:nowrap}.cal-times .working{color:var(--ok);font-weight:700}.cal-work{font-weight:700;font-size:13px}.cal-extra{font-size:11px;font-weight:600}.cal-badges{display:flex;flex-wrap:wrap;gap:3px;margin-top:auto}.cal-badges .badge{font-size:10px;padding:1px 6px}.day-panel{margin-top:14px;padding:16px 18px;display:flex;flex-direction:column;gap:10px}.day-panel-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.day-panel-head h3{margin:0;font-size:16px}.day-panel-head .close{margin-left:auto}.day-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 16px}.day-facts>div{display:flex;flex-direction:column;gap:2px}.day-facts .k{font-size:12px;color:var(--muted)}.day-facts .v{font-weight:600}.day-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding-top:8px;border-top:1px solid var(--line)}.day-actions .link.strong{font-weight:700}@media (max-width: 800px){.att-page .page-head{flex-wrap:wrap}.att-page .page-head h2{width:100%}.att-controls{justify-content:flex-start}.cal-weekdays{display:none}.cal-grid{grid-template-columns:1fr}.cal-cell{min-height:0;border-right:none}.cal-cell.out{display:none}.cal-wd{display:inline}}.day-panel .edit-box{padding:10px 12px;background:#eef3ff;border-radius:8px}.grid button.sm{white-space:nowrap}.seg-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;font-weight:500;margin:4px 0 6px}.seg-rows{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.seg-row{display:grid;grid-template-columns:88px 1fr auto 1fr auto;gap:6px;align-items:center}.seg-row select,.seg-row input{margin:0}.seg-row select.seg-field{background:#fff4e6;color:#e8590c;font-weight:600}.seg-row button.sm{white-space:nowrap}@media (max-width: 640px){.seg-row{grid-template-columns:1fr 1fr}.seg-row select{grid-column:1 / 2}.seg-row button.sm{grid-column:2 / 3;justify-self:end}.seg-row>span.muted{display:none}.seg-row input{grid-column:span 2}}.edit-box .seg-editor,.edit-row .seg-editor{margin-bottom:8px}.seg-editor .seg-row input{width:auto}.day-segs{grid-column:1 / -1;display:flex;flex-direction:column;gap:4px;margin-top:4px;padding-top:8px;border-top:1px dashed var(--line)}.day-segs .k{font-size:12px;color:var(--muted)}.day-segs ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.day-segs li{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.day-segs li .t{font-weight:600;min-width:130px}.day-segs li .working{color:var(--ok);font-weight:700}.cal-wl{margin-left:auto;font-size:13px;line-height:1;cursor:pointer;border-radius:4px;padding:1px 2px}.cal-status+.cal-wl{margin-left:4px}.cal-wl.off{opacity:.28;filter:grayscale(1)}.cal-wl:hover{background:#eef1fd}.cal-cell.selected .cal-wl.on,.cal-wl.on{opacity:1}.wl-view .worklog-field{margin-bottom:14px}.wl-view .worklog-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55}.wl-view .btn-link{display:inline-flex;align-items:center;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--text);font-size:13px;text-decoration:none}.modal-lg textarea.autogrow{resize:vertical;overflow:hidden}.s-web{background:#e6fcf5;color:#0b7285}.wc-card{margin-bottom:20px;border-left:4px solid var(--primary)}.wc-card.compact{margin-bottom:14px;padding:12px 16px}.wc-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.wc-today{display:flex;gap:14px;flex-wrap:wrap;margin-top:6px;font-size:14px}.wc-today b{font-size:16px}.wc-btn{min-width:120px;font-size:16px;padding:12px 22px}.wc-btn.out{background:#e8590c;border-color:#e8590c}.wc-btn.out:hover{background:#d9480f}.wc-net{margin-top:10px;font-size:13px;color:var(--muted)}.wc-net b{color:var(--text)}.wc-net.ok,.wc-net.ok b{color:var(--ok)}.wc-net.warn,.wc-net.warn b{color:#b08900}.wc-net.bad,.wc-net.bad b{color:var(--danger)}.wc-policies{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.wc-policy{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:8px;padding:10px 12px;cursor:pointer;margin:0}.wc-policy.on{border-color:var(--primary);background:#eef1fd}.wc-policy input{width:auto;margin:3px 0 0}.day-web code,.grid code{font-size:12px;background:#f1f3f5;padding:1px 5px;border-radius:4px}.board-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.chk-inline{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:500;white-space:nowrap}.chk-inline input{width:auto;margin:0}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:1px}.prio{display:inline-block;font-size:11px;font-weight:700;padding:0 5px;border-radius:4px;margin-right:4px;vertical-align:1px}.prio-P0{background:#ffe3e3;color:#c92a2a}.prio-P1{background:#fff3bf;color:#a35f00}.prio-P2{background:#e7f5ff;color:#1971c2}.sec-done{color:#2b8a3e}.sec-today{color:#1c7ed6}.sec-next{color:#868e96}.sec-blocker{color:#e8590c}.tag{display:inline-block;font-size:11px;padding:0 6px;border-radius:4px;background:#f1f3f5;color:#495057;margin-right:4px}.xmap-wrap{overflow:auto;max-height:calc(100vh - 230px);border:1px solid var(--line);border-radius:10px;background:var(--card)}.xmap{display:grid;min-width:max-content}.xmap>div{border-bottom:1px solid var(--line);border-right:1px solid #f1f3f5}.xmap-corner,.xmap-date{position:sticky;top:0;z-index:2;background:#f8f9fa;padding:8px;font-size:12px;font-weight:600}.xmap-corner{left:0;z-index:3;color:var(--muted)}.xmap-date.today{background:#e7f0ff;color:var(--primary)}.xmap-date.week,.xmap-cell.week{border-left:2px solid #dee2e6}.xmap-proj{position:sticky;left:0;z-index:1;background:#fff;padding:8px 10px;box-shadow:1px 0 0 var(--line)}.xmap-proj.none{background:#f8f9fa}.xmap-proj-name{display:flex;align-items:center;gap:2px}.xmap-cell{padding:5px;display:flex;flex-direction:column;gap:4px;min-height:52px}.xmap-cell.today{background:#f5f9ff}.pchip{display:grid;grid-template-columns:auto auto auto 1fr;align-items:center;column-gap:4px;text-align:left;border:1px solid var(--line);border-left:4px solid;border-radius:6px;padding:3px 6px;background:#fff;font-size:12px;line-height:1.35;width:100%}.pchip:hover{background:#f8f9fa}.pchip-name{font-weight:700;white-space:nowrap}.pchip-n{font-size:10px;background:#f1f3f5;border-radius:8px;padding:0 5px;color:#495057}.pchip-warn{color:#e8590c;font-size:11px}.pchip-title{grid-column:1 / -1;min-width:0;overflow-wrap:anywhere;color:var(--text);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.pchip-title.sec-blocker{color:#c2410c}.deliv-mark{font-size:11px;font-weight:600;padding:2px 6px;border-radius:4px;background:#fff4e6;color:#d9480f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.deliv-mark.late{background:#ffe3e3;color:#c92a2a}.deliv-mark.done{background:#ebfbee;color:#2b8a3e}.deliv-mark.cancelled{background:#f1f3f5;color:#adb5bd;text-decoration:line-through}.xmap-legend{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px}.legend-item{display:inline-flex;align-items:center;font-size:12px;padding:3px 9px;border-radius:14px}.legend-item.on{border-color:var(--primary);background:#edf2ff}.wlp-sec{margin-bottom:12px}.wlp-sec-head{font-weight:700;font-size:13px;margin-bottom:4px}.wlp-item{display:grid;grid-template-columns:1fr 210px;gap:10px;align-items:start;padding:7px 8px;border-radius:6px;border:1px solid transparent}.wlp-item+.wlp-item{border-top-color:#f1f3f5}.wlp-item.hl{background:#fff9db;border-color:#ffe066}.wlp-detail{white-space:pre-wrap;color:#495057;font-size:13px;margin-top:2px}.wlp-assign select{margin:0;font-size:12px;padding:5px 6px}.wlp-assign .small{display:block;margin-top:2px}.wl-panel .worklog-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55}@media (max-width: 640px){.wlp-item{grid-template-columns:1fr}}.risk-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:16px;align-items:start}@media (max-width: 1100px){.risk-layout{grid-template-columns:1fr}}.risk-group{margin-bottom:14px}.risk-group-head{font-weight:700;font-size:13px;margin-bottom:6px}.risk-row{display:grid;grid-template-columns:74px 1fr auto;gap:10px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-left-width:4px;border-radius:8px;margin-bottom:6px}.risk-row.lv-P0{border-left-color:#e03131}.risk-row.lv-P1{border-left-color:#f59f00}.risk-row.lv-P2{border-left-color:#74c0fc}.risk-kind{font-size:12px;font-weight:700;text-align:center;padding:2px 4px;border-radius:4px;background:#f1f3f5}.risk-kind.k-deliverable{background:#fff4e6;color:#d9480f}.risk-kind.k-decision{background:#fff0f6;color:#c2255c}.risk-kind.k-stalled,.risk-kind.k-inactive{background:#f3f0ff;color:#6741d9}.risk-kind.k-project_end{background:#e7f5ff;color:#1971c2}.risk-act{display:flex;gap:6px}.week-block{margin-bottom:12px}.week-block.warn .week-head{color:#c92a2a}.week-head{font-weight:700;font-size:13px;padding-bottom:4px;border-bottom:1px solid var(--line);margin-bottom:4px}.week-empty{padding:4px 0}.deliv-row{display:grid;grid-template-columns:54px 78px 1fr auto;gap:8px;align-items:center;padding:5px 0;font-size:13px}.deliv-row.done{opacity:.6}.dday{font-weight:700;font-size:12px;text-align:center;border-radius:4px;background:#f1f3f5;padding:1px 4px}.dday.hot{background:#ffe3e3;color:#c92a2a}.people-table tr.sel td{background:#edf2ff}.person-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:20px}@media (max-width: 1000px){.person-grid{grid-template-columns:1fr}}.sub-h{margin:0 0 8px;font-size:14px}.stream-row{display:grid;grid-template-columns:150px 120px 1fr;gap:10px;align-items:center;padding:4px 0}.stream-name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stream-bar{height:8px;background:#f1f3f5;border-radius:4px;overflow:hidden}.stream-bar span{display:block;height:100%;border-radius:4px}.stream-days{display:flex;gap:2px;flex-wrap:nowrap;overflow:hidden}.heat{width:10px;height:14px;border-radius:2px;background:#f1f3f5;flex:0 0 auto}.heat.we{background:#fafafa}.recent-list{display:flex;flex-direction:column;gap:2px;max-height:520px;overflow-y:auto}.recent-day{display:grid;grid-template-columns:44px 1fr;gap:6px;padding:4px 0;border-bottom:1px solid #f1f3f5}.recent-date{font-weight:700;font-size:12px;color:var(--muted);padding-top:3px}.recent-item{display:block;width:100%;text-align:left;border:none;background:none;padding:3px 4px;font-size:13px;border-radius:4px}.recent-item:hover{background:#f8f9fa}.pstat{font-size:12px;font-weight:600;padding:1px 8px;border-radius:10px;background:#f1f3f5;white-space:nowrap}.ps-active{background:#ebfbee;color:#2b8a3e}.ps-planning{background:#e7f5ff;color:#1971c2}.ps-on_hold{background:#fff9db;color:#a35f00}.ps-dropped{color:#adb5bd}.alias-box{display:flex;flex-wrap:wrap;gap:6px;align-items:center;border:1px solid var(--line);border-radius:6px;padding:6px;margin-top:4px;background:#fff}.alias-box input{flex:1 1 180px;border:none;margin:0;padding:4px}.alias-chip{display:inline-flex;align-items:center;gap:4px;background:#edf2ff;color:#364fc7;border-radius:12px;padding:2px 4px 2px 10px;font-size:13px;font-weight:500}.alias-chip button{border:none;background:none;padding:0 4px;color:#748ffc;font-size:14px;line-height:1}.member-pick{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:6px;font-weight:400}.deliv-add{display:grid;grid-template-columns:150px 1fr 120px 130px auto;gap:8px;align-items:center}.deliv-add input,.deliv-add select{margin:0}@media (max-width: 760px){.deliv-add{grid-template-columns:1fr 1fr}}.sug-list{display:flex;flex-direction:column}.sug-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #f1f3f5;flex-wrap:wrap}.pchip-ai{font-size:9px;font-weight:800;color:#6741d9;background:#f3f0ff;border-radius:4px;padding:0 4px;letter-spacing:.3px}.wlp-ai{margin-top:4px;font-size:13px}.ai-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}.ai-layout>.error{grid-column:1 / -1}.ai-wide{grid-column:1 / -1}@media (max-width: 1000px){.ai-layout{grid-template-columns:1fr}}.kv{display:grid;grid-template-columns:130px 1fr;gap:6px 10px;margin:0;font-size:13px}.kv dt{color:var(--muted)}.kv dd{margin:0;overflow-wrap:anywhere}.code-block{background:#f8f9fa;border:1px solid var(--line);border-radius:6px;padding:10px;font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;max-height:420px;overflow:auto;margin:8px 0}.ai-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.ai-stats>div{background:#f8f9fa;border-radius:8px;padding:10px;display:flex;flex-direction:column;align-items:center}.ai-stats b{font-size:20px}.ai-stats span{font-size:12px;color:var(--muted)}.ai-stats .bad b{color:var(--danger)}.job-box{border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:8px}.ai-label{display:block;font-weight:600;font-size:13px;margin-bottom:10px}.ai-label textarea{font-family:ui-monospace,D2Coding,Consolas,monospace;font-size:12.5px;line-height:1.5}.ai-params{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.ai-params label{font-size:13px;font-weight:500}@media (max-width: 760px){.ai-params{grid-template-columns:1fr 1fr}}.ai-table td{vertical-align:top}.openai-box{display:grid;grid-template-columns:1fr 160px;gap:8px 12px;align-items:end}.openai-box label{font-size:13px;font-weight:600}.openai-box .openai-key,.openai-box p{grid-column:1 / -1}.openai-box input,.openai-box select{margin-top:4px}@media (max-width: 560px){.openai-box{grid-template-columns:1fr}}
