:root{--fg: #0a1424;--bg: #e4e4e4;--card: rgba(244, 247, 250, .7);--muted: #dcdfe5;--muted-fg: #5878a7;--hairline: #d2d2d2;--line: rgba(10, 20, 36, .1);--success: #2f9e6a;--success-bg: #d6f0e3;--warning: #cc6600;--warning-ink: #9a4d00;--warning-bg: #fff2e5;--info-bg: #dae1ec;--error: #fa3848;--error-bg: #fde7e9;--header-h: 64px;--side-w: 240px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html,body,button,input,textarea,select{font-family:Urbanist,sans-serif;color:var(--fg)}body{background:var(--bg);font-size:14px}h1,h2,h3,h4,h5,h6{font-weight:400;color:var(--fg);margin:0}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}p{margin:0 0 8px}.icon{font-family:Material Symbols Rounded;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;font-feature-settings:"liga";-webkit-font-feature-settings:"liga";color:inherit;font-size:18px;display:inline-flex;align-items:center}.fa-header{position:fixed;top:0;left:0;right:0;height:var(--header-h);z-index:40;background:var(--bg);border-bottom:1px solid #fff;display:flex;align-items:center;gap:12px;padding:0 24px}.fa-header img{height:32px;width:auto;display:block}.fa-header__divider{width:1px;height:32px;background:#fff}.fa-header__name{font-size:20px;font-weight:700;letter-spacing:1px}.fa-header__user{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:13px;font-weight:500;opacity:.72}.fa-app{padding-top:var(--header-h);min-height:100%}.fa-app.has-side{padding-left:var(--side-w)}.fa-side{position:fixed;top:var(--header-h);left:0;bottom:0;width:var(--side-w);background:var(--bg);border-right:1px solid #fff;padding:20px 12px 24px;overflow-y:auto}.fa-main{padding:24px 48px 64px;max-width:1180px;margin:0 auto}.fa-side-label{font-size:12px;font-weight:500;letter-spacing:1px;text-transform:uppercase;opacity:.64;margin:24px 12px 10px;display:flex;align-items:center;justify-content:space-between}.fa-side-label.first{margin-top:24px}.fa-side-label .icon-btn{opacity:1}.fa-entity-block{display:block;width:100%;text-align:left;min-height:64px;padding:12px 40px 12px 14px;border-radius:12px;background:#fff center right 12px / 18px no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230a1424' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 15l5 5 5-5M7 9l5-5 5 5'/%3E%3C/svg%3E");border:1px solid #fff;box-shadow:0 4px 8px #1419271f;color:var(--fg)}.fa-entity-block:hover{border-color:var(--fg)}.fa-entity-block b{display:block;font-size:16px;font-weight:600;line-height:1.25}.fa-entity-block span{display:block;margin-top:4px;font-size:12px;font-weight:500;opacity:.64}.fa-nav{position:relative;display:flex;flex-direction:column;gap:8px}.fa-nav:before{content:"";position:absolute;left:25.5px;top:28px;bottom:28px;width:1px;background:#0a142426}.fa-nav a{display:grid;grid-template-columns:28px 1fr;gap:12px;align-items:center;min-height:48px;padding:8px 12px;border-radius:12px;color:var(--fg);position:relative}.fa-nav a:hover{background:#0a14240d}.fa-nav a.current{background:#fff}.fa-nav .dot{width:28px;height:28px;border-radius:50%;z-index:1;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;background:var(--muted);color:var(--fg)}.fa-nav .meta b{display:block;font-size:14px;font-weight:500;line-height:1.25}.fa-nav a.current .meta b{font-weight:700}.fa-nav .meta span{display:block;font-size:12px;font-weight:500;opacity:.64;line-height:1.3}.fa-nav .meta span:empty{display:none}.fa-nav .current .dot{background:var(--fg);color:#fff}.fa-nav .review .dot{background:var(--warning-bg);color:var(--warning);box-shadow:inset 0 0 0 1.5px var(--warning)}.fa-nav .review.current .dot{background:var(--fg);color:#fff;box-shadow:none}.fa-nav .done .dot{color:transparent;background:var(--success-bg) center / 14px no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230a1424' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E")}.fa-nav .locked{opacity:.55}.fa-nav .locked .dot{color:transparent;background:var(--bg) center / 15px no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230a1424' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V7a4 4 0 0 1 8 0v4'/%3E%3C/svg%3E")}.fa-nav .next .meta span{display:inline-block;margin-top:3px;padding:1px 8px;border-radius:999px;background:var(--info-bg);opacity:1}.icon-btn{background:transparent;border:0;padding:4px;border-radius:8px;line-height:0;color:var(--fg)}.icon-btn:hover{background:#0a14240f}.fa-title{display:flex;align-items:center;gap:14px;margin-bottom:24px}.fa-title__icon{width:52px;height:52px;border-radius:12px;background:var(--muted);display:flex;align-items:center;justify-content:center;flex:none}.fa-title__icon .icon{font-size:26px}.fa-title__text{font-size:32px;line-height:1.2;letter-spacing:.5px}.fa-title__sub{font-size:12px;font-weight:500;opacity:.64}.dash-head{display:flex;align-items:center;gap:12px;margin-bottom:24px}.dash-head .fa-title{margin-bottom:0}.fa-card{background:var(--card);border:1px solid #fff;border-radius:12px;padding:32px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);margin-bottom:16px}.fa-card>:last-child{margin-bottom:0}.subcard{background:#dcdfe599;border-radius:12px;padding:20px}.subcard>b:first-child,.subcard-title{display:block;font-size:14px;font-weight:500;margin-bottom:4px}.fa-main h4{font-size:18px;margin:32px 0 16px}.fa-card>h4:first-child,.subcard>h4:first-child,.section-head h4{margin-top:0}.section-head{display:flex;align-items:center;gap:12px;margin:32px 0 16px}.section-head h4{margin:0}.caption{font-size:12px;font-weight:500;opacity:.64;margin:0 0 12px;line-height:1.45}.fa-kpis{display:flex;flex-wrap:wrap;gap:1px;background:#e3e5ea;border-radius:12px;margin:0 0 24px;overflow:hidden}.fa-kpis--card{background:#fff;border:1px solid #fff}.fa-kpi{flex:1 1 180px;min-width:0;padding:16px 20px;background:#fff}.fa-kpis--card .fa-kpi{background:#eff1f4}.fa-kpi__label{font-size:14px;font-weight:700;letter-spacing:1px;color:#151a28;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fa-kpi__value{font-size:clamp(16px,1.7vw,24px);font-weight:700;line-height:1.3;margin-top:4px;overflow-wrap:normal;font-variant-numeric:tabular-nums}.fa-kpi.warn .fa-kpi__value{color:var(--warning)}.fa-kpi__hint{font-size:12px;font-weight:500;opacity:.64;margin-top:2px}.fa-empty{background:#fff;border-radius:12px;padding:28px;text-align:center;font-size:14px}.fa-empty>span{opacity:.72}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 20px;border-radius:12px;font-size:14px;font-weight:500;background:#fff;border:1px solid var(--muted);color:var(--fg);white-space:nowrap}.btn:hover:not(:disabled){background:var(--fg);border-color:var(--fg);color:#fff}.btn.primary{background:var(--fg);border-color:var(--fg);color:#fff}.btn.primary:hover:not(:disabled){background:#0a1424cc;border-color:transparent}.btn.ghost{background:transparent;border-color:transparent;padding:0 8px}.btn.ghost:hover:not(:disabled){background:#0a14240f;color:var(--fg);border-color:transparent}.btn.link{background:transparent;border:0;height:28px;padding:0}.btn.link:hover:not(:disabled){background:transparent;color:var(--fg);text-decoration:underline}.btn.danger{color:#c4202f}.btn.danger:hover:not(:disabled){background:#c4202f;border-color:#c4202f;color:#fff}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.block{width:100%}.row-actions{display:flex;align-items:center;gap:8px}.grow{flex:1}.page-foot{border-top:1px solid var(--hairline);padding-top:24px;margin-top:32px;margin-bottom:16px}.page-foot+.caption{margin-top:0}label,.label{display:block;font-size:13px;font-weight:500;margin-bottom:6px}input:not([type]),input[type=text],input[type=number],input[type=date],select,textarea{width:100%;height:36px;padding:0 12px;border-radius:10px;border:1px solid var(--muted);background:#f7f8fa;font-size:14px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--fg)}input::placeholder{color:#0a142473}textarea{height:auto;padding:10px 12px;min-height:72px}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:32px;text-overflow:ellipsis;background:#f7f8fa center right 10px / 16px no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230a1424' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}.field{margin-bottom:16px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-filters{display:grid;grid-template-columns:2fr 1fr 1fr;gap:16px;margin-bottom:8px}.check{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500}.dropzone{display:flex;align-items:center;gap:12px;margin:8px 0 0;padding:10px 12px 10px 16px;background:#f7f8fa;border-radius:10px;cursor:pointer;position:relative}.dropzone>.icon{font-size:28px;opacity:.6}.dropzone__text{flex:1;min-width:0;font-size:14px}.dropzone__text small{display:block;font-size:12px;opacity:.64}.dropzone input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.dropzone .btn{pointer-events:none;height:34px;padding:0 12px}.dropzone:hover .btn{background:var(--fg);border-color:var(--fg);color:#fff}.fa-table-wrap{background:#fff;border:1px solid #e3e5ea;border-radius:10px;overflow:auto;margin:0 0 16px}.fa-table-wrap.scroll{max-height:560px}table.fa-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}table.fa-table th{position:sticky;top:0;z-index:1;background:#fafbfc;text-align:left;font-weight:400;color:#0a1424a3;white-space:nowrap;height:32px;padding:0 8px;border-bottom:1px solid #e3e5ea;border-right:1px solid #eef0f3}table.fa-table th .icon{font-size:14px;margin-right:4px;vertical-align:-2px;opacity:.7}table.fa-table td{height:31px;padding:0 8px;border-bottom:1px solid #eef0f3;border-right:1px solid #eef0f3;vertical-align:middle;white-space:nowrap}table.fa-table th:last-child,table.fa-table td:last-child{border-right:0}table.fa-table tbody tr:last-child td{border-bottom:0}table.fa-table tbody tr:hover td{background:#f7f9fb}table.fa-table td.num,table.fa-table th.num{text-align:right;font-variant-numeric:tabular-nums}table.fa-table td.wrap{white-space:normal;min-width:260px;padding-top:6px;padding-bottom:6px;line-height:1.35}table.fa-table tr.section td{font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:#0a1424a3;background:#fafbfc;height:28px}table.fa-table tr.total td{font-weight:700;border-top:1px solid #d5d8de}table.fa-table td.edit{padding:0}table.fa-table td.edit input,table.fa-table td.edit select{height:30px;width:100%;border:1px solid transparent;border-radius:0;background-color:transparent;padding:0 8px;font-size:13px}table.fa-table td.edit select{padding-right:24px;background-position:center right 6px;background-size:12px}table.fa-table td.edit input:hover,table.fa-table td.edit select:hover{background-color:#f4f7fa}table.fa-table td.edit input:focus,table.fa-table td.edit select:focus{border-color:var(--fg);background-color:#fff;box-shadow:none}table.fa-table td.num.edit input{text-align:right;font-variant-numeric:tabular-nums}table.fa-table td.del{width:32px;text-align:center;padding:0}table.fa-table.chart{table-layout:fixed}table.fa-table.chart th:nth-child(1){width:104px}table.fa-table.chart th:nth-child(2){width:34%}table.fa-table.chart th:nth-child(3){width:104px}table.fa-table.chart th:nth-child(4){width:132px}table.fa-table.chart th:nth-child(6){width:32px}table.fa-table.chart td{overflow:hidden;text-overflow:ellipsis}.chart-sec{display:flex;align-items:center;gap:8px}.chart-sec .range{font-weight:500;letter-spacing:0;opacity:.72}.chart-sec .btn{height:24px;font-size:12px;letter-spacing:0;text-transform:none}table.fa-table tr.warn td{background:var(--warning-bg)}table.fa-table tr.added td{background:#dae1ec73}table.fa-table tr.added td:first-child{box-shadow:inset 2px 0 0 var(--muted-fg)}.chart-issue{display:flex;align-items:center;gap:4px;padding-left:8px}.chart-issue .fa-pill{flex:none}label.btn{margin:0}label.btn[aria-disabled=true]{opacity:.4;pointer-events:none}.fa-list{background:#fff;border-radius:12px;overflow:hidden}.fa-list table{width:100%;border-collapse:collapse}.fa-list th{text-align:left;font-size:12px;font-weight:600;color:#0a1424a3;padding:12px 16px;border-bottom:1px solid var(--line)}.fa-list td{font-size:14px;padding:12px 16px;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}.fa-list tbody tr:last-child td{border-bottom:0}.fa-list tbody tr{cursor:pointer}.fa-list tbody tr:hover{background:#f4f6f8}.fa-list td.muted{opacity:.64}.fa-link{font-weight:700;text-decoration:underline;text-underline-offset:2px}.fa-bar{display:block;width:96px;height:6px;border-radius:999px;background:var(--line);overflow:hidden}.fa-bar i{display:block;height:100%;border-radius:999px;background:#1d345d}.fa-bar i.ok{background:var(--success)}.fa-pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:500;background:var(--muted);white-space:nowrap}.fa-pill.ok{background:var(--success-bg)}.fa-pill.warn{background:var(--warning-bg);color:var(--warning-ink)}.fa-chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}.fa-chip{background:#fff;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:500}.tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}.tabs button{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 14px;border-radius:20px;border:1px solid var(--muted);background:#fff;color:var(--fg);font-size:12px;font-weight:500;letter-spacing:1px;text-transform:uppercase}.tabs button:hover{border-color:var(--fg)}.tabs button.active{background:var(--fg);border-color:var(--fg);color:#fff}.tabs button .count{opacity:.64}.tabs .dot{width:8px;height:8px;border-radius:50%;flex:none}.tabs .dot.review,.tabs .dot.unplaced{background:var(--warning)}.tabs .dot.adjusted{background:var(--muted-fg)}.tabs .dot.resolved{background:var(--success)}.otabs{display:flex;gap:24px;border-bottom:1px solid var(--line);margin:0 0 16px}.otabs button{background:none;border:0;padding:10px 0;margin-bottom:-1px;font-size:14px;font-weight:500;color:var(--fg);opacity:.64;border-bottom:2px solid transparent}.otabs button:hover{opacity:1}.otabs button.active{opacity:1;font-weight:600;border-bottom-color:var(--fg)}.otabs button .count{margin-left:6px;font-weight:500;opacity:.64}.unsaved-bar{display:flex;align-items:center;gap:10px;background:var(--warning-bg);border-left:4px solid var(--warning);border-radius:12px;padding:10px 12px 10px 16px;margin:0 0 16px;font-size:14px}.unsaved-bar>.icon{color:var(--warning-ink);font-size:20px}.notice{border-radius:12px;border-left:4px solid;padding:12px 16px;font-size:14px;margin:0 0 16px}.notice.info{background:var(--info-bg);border-color:var(--muted-fg)}.notice.warn{background:var(--warning-bg);border-color:var(--warning)}.expander{background:var(--card);border:1px solid #fff;border-radius:12px;margin:0 0 16px;overflow:hidden}.fa-card .expander{background:#fff9;margin-bottom:12px}.expander summary{display:flex;align-items:center;gap:10px;padding:16px 20px;cursor:pointer;font-size:14px;font-weight:500;list-style:none}.expander summary::-webkit-details-marker{display:none}.expander summary:after{content:"expand_more";font-family:Material Symbols Rounded;margin-left:auto;font-size:20px;font-weight:400;transition:transform .15s}.expander[open] summary:after{transform:rotate(180deg)}.expander .body{padding:4px 20px 20px}.log{background:#0a1424;color:#e4e4e4;border-radius:12px;padding:14px;margin:0;font-family:ui-monospace,monospace;font-size:12px;white-space:pre-wrap;overflow:auto;max-height:360px}.fa-panel{background:#fff;border-radius:12px;padding:20px 24px;margin-bottom:16px}.fa-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 32px;margin:0}.fa-fields dt{font-size:12px;font-weight:500;opacity:.64;padding-top:10px}.fa-fields dd{margin:2px 0 0;padding-bottom:10px;font-size:14px;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.fa-fields-section{font-size:12px;font-weight:600;letter-spacing:1px;text-transform:uppercase;opacity:.64;margin:20px 0 2px;grid-column:1 / -1}.fa-fields-section:first-child{margin-top:0}.fa-file{display:flex;align-items:center;gap:10px;background:#fff;border-radius:12px;padding:12px 16px 12px 20px}.fa-file .name{flex:1;min-width:0}.totals{display:flex;align-items:center;gap:8px;font-size:14px;margin:8px 0 0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a142480;z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:44px 24px}.modal{background:#f4f7fa;border-radius:24px;padding:24px;width:min(560px,100%);box-shadow:0 16px 40px #14192733;max-height:calc(100vh - 88px);overflow:auto}.modal.wide{width:min(750px,100%)}.modal__head{display:flex;align-items:center;gap:12px;margin-bottom:20px}.modal__head h3{flex:1;font-size:22px;font-weight:500}.modal p{font-size:14px;line-height:1.45;margin-bottom:16px}.modal .row-actions{margin-top:8px}.modal-sub{font-size:14px;font-weight:500;margin:12px 0 16px}.toast{position:fixed;bottom:24px;right:24px;z-index:60;background:#fff;border-radius:12px;padding:12px 16px;box-shadow:0 8px 24px #14192733;max-width:420px;font-size:14px;border-left:4px solid}.toast.success{border-color:var(--success)}.toast.error{border-color:var(--error)}.toast.info{border-color:var(--muted-fg)}
