@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600&display=swap");body{margin:0;font-family:var(--font-sans);font-size:14px;line-height:20px;background:var(--surface);color:var(--ink)}.kd-pad{padding:var(--space-4)}.kd-row{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.kd-stack{display:flex;flex-direction:column;gap:var(--space-3)}.kd-mono{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid transparent;box-shadow:var(--focus-ring)}.kd-btn{font:inherit;font-weight:500;height:var(--control-md);padding:0 var(--space-4);display:inline-flex;align-items:center;gap:var(--space-2);border-radius:var(--radius-md);border:1px solid var(--line-strong);background:var(--surface-raised);color:var(--ink);cursor:pointer;white-space:nowrap}.kd-btn:hover{background:var(--surface-sunken)}.kd-btn-sm{height:var(--control-sm);padding:0 var(--space-3);font-size:13px}.kd-btn-primary{background:var(--navy);border-color:var(--navy);color:var(--on-navy)}.kd-btn-primary:hover{background:var(--navy-hover);border-color:var(--navy-hover)}.kd-btn-quiet{border-color:transparent;background:transparent;color:var(--navy)}.kd-btn-quiet:hover{background:var(--navy-soft)}.kd-btn-danger{background:var(--danger);border-color:var(--danger);color:var(--on-danger)}.kd-btn-danger:hover{background:var(--danger);filter:brightness(.92)}.kd-btn:disabled{opacity:.45;cursor:not-allowed;filter:none}.kd-field{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.kd-field-label{font-size:12px;line-height:16px;font-weight:500;letter-spacing:.02em;color:var(--ink-muted)}.kd-field-req{color:var(--danger);margin-left:2px}.kd-field-hint{color:var(--ink-muted)}.kd-field-error,.kd-field-hint{font-size:12px;line-height:16px}.kd-field-error{color:var(--danger)}.kd-input,.kd-select{font:inherit;height:var(--control-md);padding:0 var(--space-3);border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface-raised);color:var(--ink);width:100%;box-sizing:border-box;min-width:0}.kd-input-mono{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:13px}.kd-input-right{text-align:right}.kd-input[readonly]{background:var(--surface-sunken);border-color:var(--line)}.kd-input-invalid{border-color:var(--danger)}.kd-select{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;padding-right:var(--space-2)}.kd-badge{display:inline-flex;align-items:center;gap:var(--space-1);height:22px;padding:0 var(--space-2);border-radius:var(--radius-sm);font-size:12px;font-weight:500;white-space:nowrap;background:var(--surface-sunken);color:var(--ink-muted)}.kd-badge:before{content:"";width:6px;height:6px;border-radius:var(--radius-full);background:currentColor}.kd-badge-success{background:var(--success-soft);color:var(--success)}.kd-badge-warning{background:var(--warning-soft);color:var(--warning)}.kd-badge-danger{background:var(--danger-soft);color:var(--danger)}.kd-badge-info{background:var(--navy-soft);color:var(--navy)}.kd-amount{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:13px;white-space:nowrap}.kd-amount-ccy{color:var(--ink-muted);margin-right:var(--space-1)}.kd-amount-neg{color:var(--danger)}.kd-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-raised)}.kd-table{border-collapse:collapse;width:100%;font-size:14px}.kd-table th{position:-webkit-sticky;position:sticky;top:0;background:var(--surface-sunken);color:var(--ink-muted);font-size:12px;font-weight:500;letter-spacing:.02em;text-align:left}.kd-table td,.kd-table th{padding:0 var(--space-3);height:var(--row-dense);border-bottom:1px solid var(--line);white-space:nowrap}.kd-table-comfortable td,.kd-table-comfortable th{height:var(--row-comfortable)}.kd-table .kd-num{text-align:right;font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:13px}.kd-table .kd-code{font-family:var(--font-mono);font-size:13px}.kd-table tbody tr:hover td{background:var(--surface)}.kd-table tr.kd-selected td{background:var(--navy-soft)}.kd-table tr.kd-selected td:first-child{box-shadow:inset 3px 0 0 var(--navy)}.kd-table tfoot td{background:var(--surface-sunken);font-weight:600;border-bottom:0}.kd-table-empty{padding:var(--space-6);text-align:center;color:var(--ink-muted)}.kd-table input[type=checkbox]{accent-color:var(--navy)}.kd-ph{display:flex;flex-wrap:wrap;gap:var(--space-4);align-items:flex-end;justify-content:space-between;padding-bottom:var(--space-4);border-bottom:1px solid var(--line)}.kd-ph-crumbs{font-size:12px;line-height:16px;color:var(--ink-muted);margin-bottom:var(--space-1)}.kd-ph-titlerow{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.kd-ph-title{margin:0;font-size:26px;line-height:32px;font-weight:600;letter-spacing:-.01em;text-wrap:balance}.kd-formid{font-family:var(--font-mono);font-size:12px;line-height:20px;padding:0 var(--space-2);border-radius:var(--radius-sm);background:var(--kodev-red-soft);color:var(--kodev-red-ink)}.kd-section{background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-5)}.kd-section-head{margin-bottom:var(--space-4)}.kd-section-title{margin:0;font-size:18px;line-height:24px;font-weight:600}.kd-section-desc{margin:var(--space-1) 0 0;font-size:12px;line-height:16px;color:var(--ink-muted)}.kd-grid{display:grid;grid-gap:var(--space-4);gap:var(--space-4);grid-template-columns:repeat(var(--kd-cols,2),minmax(0,1fr))}@media (max-width:720px){.kd-grid{grid-template-columns:minmax(0,1fr)}}.kd-approval{gap:var(--space-4);justify-content:space-between;padding:var(--space-3) var(--space-5);background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.kd-approval,.kd-approval-meta{display:flex;flex-wrap:wrap;align-items:center}.kd-approval-meta{gap:var(--space-3);font-size:12px;color:var(--ink-muted)}.kd-approval-note{font-size:12px;color:var(--warning)}.kd-journal-head{display:flex;flex-wrap:wrap;gap:var(--space-4);justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.kd-journal-title{margin:0;font-size:15px;line-height:22px;font-weight:600}.kd-journal-ref{font-size:12px;color:var(--ink-muted)}.kd-alert{display:flex;flex-direction:column;gap:2px;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--line);background:var(--surface-raised);color:var(--ink)}.kd-alert-title{font-weight:600}.kd-alert-info{background:var(--navy-soft);border-color:transparent}.kd-alert-info .kd-alert-title{color:var(--navy)}.kd-alert-success{background:var(--success-soft);border-color:transparent}.kd-alert-success .kd-alert-title{color:var(--success)}.kd-alert-warning{background:var(--warning-soft);border-color:transparent}.kd-alert-warning .kd-alert-title{color:var(--warning)}.kd-alert-danger{background:var(--danger-soft);border-color:transparent}.kd-alert-danger .kd-alert-title{color:var(--danger)}.kd-tabs{display:flex;gap:var(--space-1);border-bottom:1px solid var(--line);overflow-x:auto}.kd-tab{font:inherit;font-weight:500;background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:var(--space-2) var(--space-3);color:var(--ink-muted);cursor:pointer;white-space:nowrap}.kd-tab:hover{color:var(--ink)}.kd-tab-active{color:var(--navy);border-bottom-color:var(--navy)}.kd-tab-count{font-family:var(--font-mono);font-size:11px;margin-left:var(--space-1);padding:0 5px;border-radius:var(--radius-sm);background:var(--surface-sunken);color:var(--ink-muted)}.kd-nav{width:var(--sidenav-width);box-sizing:border-box;background:var(--surface-raised);border-right:1px solid var(--line);padding:var(--space-4) 0;min-height:100%}.kd-nav-product{padding:0 var(--space-5) var(--space-4);font-weight:600;font-size:15px}.kd-logo{display:block;height:32px;width:auto;margin-bottom:var(--space-3)}.kd-logo-dark,[data-theme=dark] .kd-logo-light{display:none}.kd-nav-name,[data-theme=dark] .kd-logo-dark{display:block}.kd-nav-product small{display:block;font-weight:400}.kd-nav-group,.kd-nav-product small{font-size:12px;color:var(--ink-muted)}.kd-nav-group{padding:var(--space-3) var(--space-5) var(--space-1);font-weight:500;letter-spacing:.02em}.kd-nav-item{display:flex;justify-content:space-between;gap:var(--space-2);padding:6px var(--space-5);color:var(--ink);text-decoration:none;font-size:14px}.kd-nav-item:hover{background:var(--surface)}.kd-nav-item-active{background:var(--navy-soft);color:var(--navy);font-weight:500;box-shadow:inset 3px 0 0 var(--kodev-red)}.kd-nav-item code{font-family:var(--font-mono);font-size:11px;color:var(--ink-muted)}.kd-stat{background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.kd-stat-label{font-size:12px;font-weight:500;letter-spacing:.02em;color:var(--ink-muted)}.kd-stat-value{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:22px;line-height:28px;font-weight:500}.kd-stat-note{font-size:12px;color:var(--ink-muted)}.kd-stat-note-good{color:var(--success)}.kd-stat-note-bad{color:var(--danger)}:root{--surface:#f5f6f8;--surface-raised:#fff;--surface-sunken:#eceef3;--line:#d6dae3;--line-strong:#7c8499;--ink:#1c1f2a;--ink-muted:#565d70;--navy:#0b1330;--navy-hover:#1c2a5c;--navy-soft:#e3e7f4;--on-navy:#fff;--kodev-red:#fe2048;--kodev-red-ink:#c4102e;--kodev-red-soft:#ffe4e9;--success:#1d6b50;--success-soft:#dbeee5;--warning:#9a4600;--warning-soft:#fbe8d6;--danger:#b42318;--danger-soft:#fbe4e1;--on-danger:#fff;--font-sans:"IBM Plex Sans","Segoe UI",system-ui,sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--radius-sm:3px;--radius-md:6px;--radius-full:9999px;--shadow-sm:0 1px 2px #0b13300f;--shadow-lg:0 8px 24px -4px #0b133029,0 2px 6px #0b13301a;--focus-ring:0 0 0 2px #fff,0 0 0 4px #0b1330;--control-sm:28px;--control-md:34px;--row-dense:32px;--row-comfortable:40px;--sidenav-width:240px}a{color:var(--navy)}a:hover{color:var(--navy-hover)}a.kd-btn{text-decoration:none}*{box-sizing:border-box}.app{display:flex;flex-wrap:wrap;min-height:100vh}.app .kd-nav{flex:1 1 220px;width:auto;max-width:260px;min-height:auto}.app-main{flex:999 1 560px;min-width:0;max-width:1280px;padding:20px 28px 48px;display:flex;flex-direction:column;gap:20px}@media (max-width:820px){.app .kd-nav{max-width:none}.app-main{padding:16px}}.topbar{flex-wrap:wrap;gap:12px;justify-content:space-between;background:var(--surface-raised);border:1px solid var(--line);border-radius:6px;padding:8px 12px}.topbar,.topbar>form{display:flex;align-items:center}.topbar>form{flex:1 1 280px;gap:8px;min-width:0}.pill{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;font-size:11px;font-weight:600;color:#fff;background:#b42318}.pill-navy{background:#0b1330}.grid-auto{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:16px;gap:16px}.cols{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}.col-main{flex:999 1 560px;flex-direction:column;gap:20px}.col-main,.col-side{min-width:0;display:flex}.col-side{flex:1 1 300px;flex-direction:column;gap:16px}.muted{color:var(--ink-muted)}.small{font-size:12px}.note{font-size:13px;color:var(--ink-muted)}.kd-table td{white-space:normal}.kv{display:flex;justify-content:space-between;gap:12px;font-size:14px;padding:4px 0}.kd-field textarea.kd-input{height:auto;min-height:72px;padding-top:8px;resize:vertical}.kd-alert-row{flex-direction:row!important;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:center}.room-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:10px;gap:10px}.room-card{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:6px;background:#fff;border:1px solid var(--line);min-height:110px;text-decoration:none;color:inherit}.room-card.dirty{border-color:#9a4600}.room-card.ooo{border-color:#b42318;background:snow}.room-card.occ{border-color:#0b1330}.bubble{padding:10px 12px;border-radius:8px;font-size:14px;line-height:20px;max-width:75%;white-space:pre-wrap}.bubble.out{background:#0b1330;color:#fff;align-self:flex-end}.bubble.in{background:#fff;border:1px solid var(--line);align-self:flex-start}.msg-meta{font-size:11px;color:var(--ink-muted)}.chk-list{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:14px}.chk-list label{gap:6px;min-height:28px}.chk-list label,.legend{display:flex;align-items:center}.legend{flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--ink-muted)}.legend span{display:inline-flex;gap:6px;align-items:center}.sw{display:inline-block;width:22px;height:14px;border:1px solid;border-radius:3px}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:440px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:28px;display:flex;flex-direction:column;gap:16px}.brand{display:flex;gap:10px;font-size:18px}.brand,.brand-mark{align-items:center;font-weight:600}.brand-mark{width:30px;height:30px;border-radius:6px;background:var(--navy);color:#fff;display:inline-flex;justify-content:center;font-size:14px;box-shadow:inset 0 -3px 0 var(--kodev-red)}.steps{display:flex;flex-wrap:wrap;gap:6px}.steps a{font-size:13px;padding:6px 10px;border-radius:6px;border:1px solid var(--line);text-decoration:none;background:#fff}.steps a.on{background:var(--navy-soft);border-color:transparent;font-weight:600}.fx-req{background:#fffbea!important;border-color:#a8740a!important}.fx-auto{background:#eef1fa!important;border-color:#9aa6c8!important}.fx-ro{background:#eceef3!important;border-color:#d6dae3!important;color:#565d70!important}.fx-err{background:#fbe4e1!important;border-color:#b42318!important;border-width:2px!important}.fx-ok{background:#f1f8f4!important;border-color:#1d6b50!important}.kd-input:user-invalid,.kd-select:user-invalid{background:#fbe4e1;border-color:#b42318;border-width:2px}@media print{.kd-nav,.no-print,.topbar{display:none!important}.app-main{padding:0}}.fp-choice{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:6px;cursor:pointer;margin-bottom:8px}.fp-choice:has(input:checked){border-color:var(--navy);background:var(--navy-soft)}.fp-choice input{margin-top:3px}.fp-choice>span{display:flex;flex-direction:column;gap:2px}.tour-layer{position:fixed;inset:0;z-index:900}.tour-dim{position:absolute;inset:0;background:#0b133073}.tour-hole{position:fixed;border-radius:8px;box-shadow:0 0 0 3px #fe2048,0 0 0 9999px #0b133073;pointer-events:none;transition:all .15s ease}.tour-pop{position:fixed;z-index:901;background:#fff;border-radius:10px;box-shadow:0 12px 32px -6px #0b133066;padding:16px;display:flex;flex-direction:column;gap:6px;border-top:4px solid var(--kodev-red)}.tour-count{font-size:12px;color:var(--ink-muted)}.tour-title{font-size:16px;margin:0;color:var(--navy)}.tour-text{font-size:14px;line-height:21px;margin:0 0 6px}.tour-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}@media print{.tour-layer,.tour-pop{display:none!important}}