:root{--brand:#f4cb1c;--brand-d:#e0b500;--brand-l:#ffe680;--brand-ink:#1a1505;--green-700:#7a5e00;--green-600:#c99a00;--green-500:#f4cb1c;--green-400:#ffd83a;--green-100:#efe2a4;--green-50:#fcf4d4;--blue-600:#33332c;--blue-50:#f0eee5;--amber-500:#d9851a;--amber-700:#8a5a10;--amber-100:#f0dcb0;--amber-50:#fbeeda;--red-600:#d63a2a;--red-300:#ff9b8f;--red-50:#fbe8e5;--ok-700:#1e7a45;--ok-600:#2e9e5b;--ok-500:#34a853;--ok-100:#bfe6cc;--ok-50:#e8f6ee;--ink:#16150f;--ink-2:#46443a;--muted:#7c7a6c;--faint:#a9a698;--line:#e7e3d6;--line-2:#f1eee2;--bg:#f4f1e7;--surface:#fff;--surface-2:#faf7ec;--side:#0e0e0b;--side-2:#1a1a15;--side-line:#2b2b23;--side-txt:#cbc8ba;--side-muted:#827f71;--r-lg:7px;--r:5px;--r-sm:4px;--r-xs:3px;--sh-sm:0 1px 2px #1412050f, 0 1px 1px #1412050a;--sh:0 2px 8px #14120512, 0 1px 2px #1412050d;--sh-md:0 10px 28px #1412051f, 0 2px 6px #1412050f;--sh-lg:0 22px 56px #0a09024d, 0 6px 18px #0a090229;--hard:4px 4px 0 var(--ink);--font:"Mulish", system-ui, -apple-system, sans-serif;--font-display:"Poppins", "Mulish", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{font-family:var(--font);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:14px;line-height:1.45}#root{height:100vh}.tnum{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}::selection{background:var(--brand);color:var(--brand-ink)}.linkish{color:var(--ink);border-bottom:2px solid var(--brand);padding-bottom:1px;font-weight:700;text-decoration:none}.linkish:hover{color:var(--green-700)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#d6d2c4 padding-box content-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#c2bdab padding-box content-box}::-webkit-scrollbar-track{background:0 0}.app{height:100dvh;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);grid-template-columns:auto 1fr;display:grid;overflow:hidden}.side{background:var(--side);width:252px;color:var(--side-txt);z-index:30;flex-direction:column;transition:width .22s cubic-bezier(.4,0,.2,1);display:flex;position:relative}.side.collapsed{width:78px}.side-top{align-items:center;gap:12px;height:72px;padding:18px;display:flex}.brand-mark{background:var(--brand);width:42px;height:42px;color:var(--side);border-radius:8px;flex:none;place-items:center;display:grid;position:relative;box-shadow:0 0 0 1px #ffffff0a}.brand-mark svg{width:24px;height:24px}.brand-name{font-family:var(--font-display);letter-spacing:.04em;color:#fff;white-space:nowrap;font-size:14px;font-weight:800;line-height:1.1}.brand-sub{letter-spacing:.18em;text-transform:uppercase;color:var(--side-muted);white-space:nowrap;margin-top:3px;font-size:10.5px;font-weight:600}.side.collapsed .brand-text{display:none}.side-collapse{background:var(--brand);width:26px;height:26px;color:var(--brand-ink);z-index:31;border:none;border-radius:50%;place-items:center;display:grid;position:absolute;top:26px;right:-13px;box-shadow:0 2px 8px #0006}.side-collapse svg{width:15px;height:15px;transition:transform .22s}.side.collapsed .side-collapse svg{transform:rotate(180deg)}.nav{flex-direction:column;flex:1;gap:3px;padding:8px 12px;display:flex;overflow-y:auto}.nav-label{letter-spacing:.18em;text-transform:uppercase;color:var(--side-muted);padding:14px 12px 8px;font-size:10px;font-weight:700}.side.collapsed .nav-label{opacity:0}.nav-item{border-radius:var(--r);color:var(--side-txt);text-align:left;white-space:nowrap;background:0 0;border:none;align-items:center;gap:13px;width:100%;padding:11px 13px;font-size:13.5px;font-weight:600;transition:background .14s,color .14s;display:flex;position:relative}.nav-item svg{flex:none;width:19px;height:19px}.nav-item:hover{color:#fff;background:#ffffff0d}.nav-item.active{color:#fff;background:#f4cb1c21}.nav-item.active:before{content:"";background:var(--brand);border-radius:0 3px 3px 0;width:3px;position:absolute;top:8px;bottom:8px;left:0}.nav-item.active svg{color:var(--brand)}.side.collapsed .nav-item{justify-content:center;padding:11px}.side.collapsed .nav-item .nav-text,.side.collapsed .nav-item.active:before{display:none}.nav-badge{background:var(--brand);color:var(--brand-ink);font-size:11px;font-weight:800;font-family:var(--mono);border-radius:999px;margin-left:auto;padding:1px 8px}.side.collapsed .nav-badge{display:none}.side-user{border-top:1px solid var(--side-line);flex-direction:column;gap:10px;padding:14px;display:flex}.side-user-top{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;border-radius:var(--r-sm);background:0 0;border:none;align-items:center;gap:11px;padding:0;display:flex}button.side-user-top:hover{opacity:.85}button.side-user-top:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.avatar{width:38px;height:38px;color:var(--brand-ink);background:var(--brand);font-size:13.5px;font-weight:800;font-family:var(--font-display);border-radius:8px;flex:none;place-items:center;display:grid}.side-user-info{flex:1;min-width:0;line-height:1.25;overflow:hidden}.side-user-info b{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:700;display:block;overflow:hidden}.side-user-info span{color:var(--side-muted);font-size:11.5px;font-family:var(--mono)}.side.collapsed .side-user-info,.side.collapsed .side-user-actions{display:none}.side.collapsed .side-user-top{justify-content:center}.side-user-actions{justify-content:space-around;gap:2px;display:flex}.user-tree-row,.user-tree-row:focus,.user-tree-row:focus-visible{outline:none}.icon-btn-side{color:var(--side-muted);background:0 0;border:none;border-radius:7px;place-items:center;width:32px;height:32px;transition:all .14s;display:grid;position:relative}.icon-btn-side:hover{color:#fff;background:#ffffff0f}.icon-btn-side svg{width:18px;height:18px}.side-overflow{position:relative}.side-menu{border:1px solid var(--line);z-index:40;background:#fff;border-radius:7px;min-width:180px;padding:5px;position:absolute;bottom:calc(100% + 6px);right:0;box-shadow:0 10px 28px #00000038}.side-menu-item{width:100%;color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:5px;align-items:center;gap:9px;padding:8px 10px;font-size:13px;font-weight:600;transition:all .12s;display:flex}.side-menu-item:hover{background:var(--wash)}.side-menu-item svg{width:16px;height:16px;color:var(--muted)}.side-menu-item.danger,.side-menu-item.danger svg{color:var(--red-600)}.side-menu-sep{background:var(--line);height:1px;margin:4px 2px}.side-notif{position:relative}.notif-count{background:var(--brand);min-width:14px;height:14px;color:var(--brand-ink);border:1.5px solid var(--side);border-radius:7px;place-items:center;padding:0 3px;font-size:9px;font-weight:800;line-height:11px;display:grid;position:absolute;top:1px;right:0}.notif-panel{border:1px solid var(--line);z-index:40;background:#fff;border-radius:7px;width:320px;max-width:78vw;position:absolute;bottom:calc(100% + 6px);left:0;overflow:hidden;box-shadow:0 10px 28px #00000038}.notif-head{border-bottom:1px solid var(--line);color:var(--ink);justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;font-size:13.5px;display:flex}.notif-readall{color:var(--blue-600);cursor:pointer;background:0 0;border:none;border-radius:5px;align-items:center;gap:5px;padding:2px 4px;font-size:12px;font-weight:700;display:inline-flex}.notif-readall:hover{background:var(--wash)}.notif-readall svg{width:14px;height:14px}.notif-list{max-height:360px;padding:5px;overflow-y:auto}.notif-item{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;flex-direction:column;gap:4px;width:100%;padding:9px 10px;transition:all .12s;display:flex}.notif-item:hover{background:var(--wash)}.notif-item.unread{background:var(--brand-wash);border-left:3px solid var(--brand)}.notif-item-top{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.notif-title{color:var(--ink);font-size:13px;font-weight:700}.notif-item:not(.unread) .notif-title{font-weight:600}.notif-time{color:var(--muted);flex-shrink:0;font-size:11px}.notif-body{color:var(--muted);font-size:12.5px;line-height:1.35}.notif-empty{text-align:center;color:var(--muted);padding:22px 12px;font-size:13px}.about-rows{flex-direction:column;gap:9px;display:flex}.about-row{justify-content:space-between;gap:16px;font-size:13.5px;display:flex}.about-row span{color:var(--muted)}.about-row b{font-weight:700}.main{flex-direction:column;min-width:0;display:flex;overflow:hidden}.topbar{background:var(--surface);border-bottom:1px solid var(--line);z-index:20;flex:none;align-items:center;gap:18px;height:66px;padding:0 26px;display:flex}.crumbs{color:var(--muted);align-items:center;gap:6px;min-width:0;font-size:13px;display:flex}.crumbs a{color:var(--muted);white-space:nowrap;font-weight:600;text-decoration:none}.crumbs a:hover{color:var(--ink)}.crumbs .sep{color:var(--faint);display:flex}.crumbs .cur{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-weight:800;overflow:hidden}.topbar-search{background:var(--surface-2);border:1.5px solid var(--line);border-radius:var(--r);width:300px;color:var(--muted);cursor:text;align-items:center;gap:9px;margin-left:auto;padding:8px 13px;transition:all .16s;display:flex}.topbar-search:focus-within{border-color:var(--brand);box-shadow:0 0 0 4px var(--green-50);background:#fff}.topbar-search svg{flex:none;width:17px;height:17px}.topbar-search input{color:var(--ink);background:0 0;border:none;outline:none;width:100%;font-size:13.5px}.topbar-actions{align-items:center;gap:8px;display:flex}.pwa-update{z-index:1300;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));background:var(--surface);border:1.5px solid var(--ink);border-radius:var(--r);box-shadow:var(--sh-md);align-items:center;gap:10px;max-width:calc(100vw - 24px);padding:10px 14px;display:flex;position:fixed;transform:translate(-50%)}.pwa-update-text{color:var(--ink);font-size:13px;font-weight:700}.content{flex:1;overflow:hidden auto}.page{max-width:1660px;margin:0 auto;padding:28px 34px 64px}.page-head{align-items:flex-start;gap:20px;margin-bottom:22px;display:flex}.page-title{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);margin:0;padding-left:18px;font-size:27px;font-weight:800;position:relative}.page-title:before{content:"";background:var(--brand);border-radius:1px;width:6px;position:absolute;top:5px;bottom:5px;left:0}.page-sub{color:var(--muted);margin-top:6px;padding-left:18px;font-size:13.5px;font-weight:500}.page-head-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-left:auto;display:flex}.users-page{padding-bottom:0}.users-page .page-head{z-index:6;background:var(--bg);border-bottom:1px solid var(--line);margin-bottom:14px;padding-top:10px;padding-bottom:14px;position:sticky;top:0}.users-page .user-detail-card{z-index:5;max-height:45vh;margin-bottom:24px;position:sticky;bottom:0;overflow:auto}.btn{border-radius:var(--r-sm);white-space:nowrap;letter-spacing:.005em;color:var(--ink);border:1.6px solid #0000;align-items:center;gap:8px;padding:9px 16px;font-size:13.5px;font-weight:700;line-height:1;transition:background .14s,box-shadow .14s,border-color .14s,color .14s,transform 50ms;display:inline-flex}.btn:active{transform:translateY(.5px)}.btn svg{width:17px;height:17px}.btn-primary{background:var(--brand);color:var(--brand-ink);box-shadow:var(--sh-sm)}.btn-primary:hover{background:var(--brand-d)}.btn-ghost{background:var(--surface);border-color:var(--ink);color:var(--ink)}.btn-ghost:hover{background:var(--ink);color:#fff}.btn-ghost:disabled{color:var(--faint);border-color:var(--line);background:var(--surface)}.btn-soft{background:var(--green-50);color:var(--green-700);border-color:var(--green-100)}.btn-soft:hover{background:var(--green-100)}.btn-blue{background:var(--surface);color:var(--blue-600);border-color:#cdccc4}.btn-blue:hover{background:var(--blue-600);color:#fff;border-color:var(--blue-600)}.btn-blue-solid{background:var(--ink);color:#fff}.btn-blue-solid:hover{background:#000}.btn-danger{background:var(--red-600);color:#fff}.btn-danger:hover{filter:brightness(.92)}.btn-sm{gap:6px;padding:7px 11px;font-size:12.5px}.btn-lg{padding:13px 22px;font-size:15px}.btn-hero{box-shadow:var(--hard);border:1.8px solid var(--ink)}.btn-hero:hover{box-shadow:2px 2px 0 var(--ink);background:var(--brand-d);transform:translate(2px,2px)}.btn:disabled{opacity:.55;pointer-events:none}.icon-btn{border-radius:var(--r-sm);border:1.5px solid var(--line);background:var(--surface);width:36px;height:36px;color:var(--ink-2);flex:none;place-items:center;transition:background .13s,color .13s,border-color .13s;display:grid}.icon-btn svg{width:18px;height:18px}.icon-btn:hover{border-color:var(--ink);background:var(--surface-2);color:var(--ink)}.icon-btn.danger:hover{border-color:var(--red-600);color:var(--red-600);background:var(--red-50)}.icon-btn.go:hover{border-color:var(--brand);color:var(--green-700);background:var(--green-50)}.toolrow{align-items:center;gap:5px;display:flex}.toolrow .icon-btn{width:33px;height:33px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-sm)}.card-pad{padding:24px}.section{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);margin-bottom:18px;overflow:hidden}.section-head{border-bottom:1px solid var(--line-2);background:var(--surface-2);align-items:center;gap:12px;padding:15px 20px;display:flex}.section-head .ic{border-radius:var(--r-sm);background:var(--ink);width:33px;height:33px;color:var(--brand);flex:none;place-items:center;display:grid}.section-head .ic svg{width:18px;height:18px}.section-head h3{font-family:var(--font-display);letter-spacing:-.005em;margin:0;font-size:15px;font-weight:700}.section-head .sub{color:var(--muted);font-size:12.5px;font-weight:500}.section-body{padding:22px}.group{border:1px solid var(--line);border-radius:var(--r);margin-bottom:16px;padding:22px 18px 8px;position:relative}.group>.group-label{background:var(--surface);letter-spacing:.05em;text-transform:uppercase;color:var(--green-700);padding:0 8px;font-size:11px;font-weight:800;position:absolute;top:-9px;left:14px}.fld{margin-bottom:16px;position:relative}.fld input,.fld select,.fld .fld-fake{border:1.5px solid var(--line);border-radius:var(--r-sm);width:100%;min-height:46px;color:var(--ink);background:var(--surface);appearance:none;outline:none;padding:14px 13px 0;font-size:14px;transition:border-color .15s,box-shadow .15s}.fld .fld-fake{background:var(--surface-2);color:var(--ink-2);align-items:flex-end;padding-bottom:8px;display:flex}.fld textarea{font-family:inherit}.fld label{color:var(--muted);letter-spacing:.01em;pointer-events:none;white-space:nowrap;font-size:11px;font-weight:700;position:absolute;top:7px;left:13px}.fld label .req,.fld .req{color:var(--green-600);margin-left:2px}.fld input:focus,.fld select:focus{border-color:var(--brand);box-shadow:0 0 0 4px var(--green-50)}.fld input:focus~label,.fld select:focus~label{color:var(--green-700)}.fld input::placeholder{color:var(--faint)}.fld input:disabled,.fld.disabled .fld-fake{background:var(--surface-2);color:var(--muted)}.fld .suffix{color:var(--muted);font-size:12.5px;font-weight:600;position:absolute;bottom:11px;right:34px}.fld .caret{color:var(--muted);pointer-events:none;position:absolute;bottom:11px;right:11px}.fld .caret svg{width:18px;height:18px}.fld input.has-toggle{padding-right:48px}.fld .fld-toggle{cursor:pointer;position:absolute;top:50%;right:5px;transform:translateY(-50%)}.fld .fld-toggle:focus-visible{outline:2px solid var(--green-500);outline-offset:1px}.grid-2{grid-template-columns:1fr 1fr;gap:14px 18px;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:14px 18px;display:grid}.check{color:var(--ink-2);cursor:pointer;align-items:center;gap:9px;font-size:13px;font-weight:600;display:inline-flex;position:relative}.check .box{border-radius:var(--r-xs);border:1.7px solid var(--brand);background:var(--brand);width:20px;height:20px;color:var(--brand-ink);flex:none;place-items:center;display:grid}.check .box svg{width:13px;height:13px}.check .box.off{background:var(--surface);border-color:var(--line)}.check .box.off svg{display:none}.check .check-cb{opacity:0;pointer-events:none;width:1px;height:1px;margin:0;position:absolute}.check .check-cb:focus-visible+.box{outline:2px solid var(--brand);outline-offset:2px}.table-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-sm);overflow:hidden}.table-toolbar{border-bottom:1px solid var(--line-2);background:var(--surface-2);flex-wrap:wrap;align-items:center;gap:12px;padding:12px 16px;display:flex}.table-scroll{overflow-x:auto}table.tbl{border-collapse:collapse;width:100%;font-size:13.5px}table.tbl thead th{text-align:left;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);border-bottom:2px solid var(--line);white-space:nowrap;background:var(--surface);z-index:2;padding:11px 14px;font-size:11px;font-weight:800;position:sticky;top:0}table.tbl thead th .th-in{cursor:pointer;font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;background:0 0;border:0;align-items:center;gap:5px;margin:0;padding:0;display:inline-flex}table.tbl thead th button.th-in{text-align:left;width:100%;padding:11px 14px;display:flex}table.tbl thead th button.th-in:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}table.tbl thead th .th-in svg{width:13px;height:13px;color:var(--faint)}table.tbl tbody td{border-bottom:1px solid var(--line-2);white-space:nowrap;color:var(--ink);vertical-align:middle;padding:12px 14px}table.tbl tbody tr{cursor:pointer;transition:background .1s}table.tbl tbody tr:hover{background:var(--surface-2)}table.tbl tbody tr.group-row td{background:var(--surface-2);font-weight:800;font-family:var(--font-display);color:var(--ink);cursor:pointer;font-size:13.5px}table.tbl tbody tr.group-row:hover td{background:#f3efe2}.row-actions{justify-content:flex-end;gap:5px;display:flex}.row-actions .icon-btn{width:31px;height:31px}.row-actions .icon-btn svg{width:16px;height:16px}.t-foot{border-top:1px solid var(--line-2);color:var(--muted);justify-content:space-between;align-items:center;padding:13px 16px;font-size:12.5px;display:flex}.t-foot b{color:var(--ink)}.pager{align-items:center;gap:3px;display:flex}.pager .icon-btn{width:31px;height:31px}.pager b{color:var(--ink)}.pager-size{font:inherit;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);cursor:pointer;border-radius:5px;padding:2px 5px;font-weight:700}.pager-size:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--green-50);outline:none}.pop-anchor{display:inline-flex;position:relative}.pop-badge{background:var(--brand);min-width:16px;height:16px;color:var(--brand-ink);font-family:var(--mono);box-shadow:0 0 0 2px var(--surface-2);border-radius:9px;place-items:center;padding:0 4px;font-size:10px;font-weight:800;line-height:1;display:grid;position:absolute;top:-5px;right:-5px}.icon-btn.active{border-color:var(--ink);background:var(--ink);color:#fff}.icon-btn.active svg{color:var(--brand)}.icon-btn:disabled{opacity:.42;cursor:default}.icon-btn:disabled:hover{border-color:var(--line);background:var(--surface);color:var(--ink-2)}.list-pop{z-index:50;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);min-width:248px;max-width:300px;max-height:min(72vh,560px);box-shadow:var(--sh-lg);padding:12px;animation:.12s pop-in;position:absolute;top:calc(100% + 6px);right:0;overflow-y:auto}.list-pop.left{left:0;right:auto}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.fpop{flex-direction:column;gap:10px;display:flex}.fpop-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.fpop-title{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:800}.fpop-reset{font:inherit;color:var(--green-700);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;font-weight:700}.fpop-reset:hover{text-decoration:underline}.fpop-field{flex-direction:column;gap:4px;display:flex}.fpop-field>span{color:var(--ink-2);font-size:11px;font-weight:700}.fpop-field select,.fpop-field input[type=date]{box-sizing:border-box;width:100%;font:inherit;color:var(--ink);background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-sm);cursor:pointer;padding:8px 9px;font-size:13px}.fpop-field select:focus,.fpop-field input[type=date]:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--green-50);outline:none}.fpop-check{padding:2px 0}.fpop-dates{grid-template-columns:1fr 1fr;gap:8px;display:grid}.fpop-dates .hu-date,.fpop-dates .hu-date input{width:100%}.fpop-foot{border-top:1px solid var(--line-2);justify-content:flex-end;padding-top:4px;display:flex}.active-filters{border-bottom:1px solid var(--line-2);background:var(--surface);flex-wrap:wrap;align-items:center;gap:7px;padding:10px 16px;display:flex}.af-label{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-right:2px;font-size:11px;font-weight:800}.af-chip{color:var(--green-700);background:var(--green-50);border:1px solid var(--green-100);border-radius:var(--r-sm);align-items:center;gap:6px;padding:4px 5px 4px 10px;font-size:12.5px;font-weight:600;display:inline-flex}.af-chip b{color:var(--ink);font-weight:700}.af-chip button{width:18px;height:18px;color:var(--green-700);cursor:pointer;background:0 0;border:none;border-radius:4px;place-items:center;padding:0;display:grid}.af-chip button:hover{background:var(--green-100);color:var(--ink)}.af-clear{margin-left:auto}.list-empty{color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:56px 20px;display:flex}.list-empty p{text-align:center;font-size:14.5px}table.tbl.compact thead th{padding:7px 14px}table.tbl.compact tbody td{padding:6px 14px}.badge{border-radius:var(--r-xs);letter-spacing:.01em;white-space:nowrap;align-items:center;gap:5px;padding:4px 9px;font-size:11.5px;font-weight:800;line-height:1.2;display:inline-flex}.badge svg{width:12px;height:12px}.badge.ok{background:var(--ink);color:#fff}.badge.ok svg{color:var(--brand)}.badge.fail{background:var(--red-600);color:#fff}.badge.wait{background:var(--brand);color:var(--brand-ink)}.badge.info{color:var(--blue-600);background:0 0;border:1.4px solid #cfcdc4}.badge.muted{background:var(--line-2);color:var(--muted);border:1px solid var(--line)}.dot{border-radius:50%;width:8px;height:8px;display:inline-block}.save-status{letter-spacing:.01em;white-space:nowrap;align-items:center;gap:6px;font-size:12.5px;font-weight:700;display:inline-flex}.save-status svg{flex:none;width:15px;height:15px}.save-status.saved{color:var(--muted)}.save-status.saving{color:var(--green-700)}.save-status.pending{color:var(--amber-700)}.save-status.err{color:var(--red-600)}.dot.ok{background:var(--green-500)}.dot.fail{background:var(--red-600)}.dot.wait{background:var(--amber-500)}.chip{background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-sm);color:var(--ink-2);align-items:center;gap:6px;padding:6px 11px;font-size:12.5px;font-weight:600;display:inline-flex}.chip b,.chip strong{font-family:var(--mono);color:var(--ink);font-weight:600}.chip.green{background:var(--green-50);border-color:var(--green-100);color:var(--green-700)}.chip.green b,.chip.green strong{color:var(--green-700)}.chip.green svg{color:var(--green-600)}.tick{color:var(--green-600);place-items:center;display:inline-grid}.tick svg{width:18px;height:18px}.cross{color:var(--faint);place-items:center;display:inline-grid}.cross svg{width:18px;height:18px}.bar{background:var(--line);border-radius:999px;min-width:70px;height:7px;overflow:hidden}.bar>span{background:var(--brand);border-radius:999px;height:100%;display:block}.bar>span.blue{background:var(--blue-600)}.tabs{border-bottom:1px solid var(--line);gap:2px;display:flex;overflow-x:auto}.tab{color:var(--muted);white-space:nowrap;background:0 0;border:none;align-items:center;gap:8px;padding:14px 16px;font-size:13.5px;font-weight:600;transition:color .14s;display:flex;position:relative}.tab .tab-ic{width:17px;height:17px;color:var(--faint);transition:color .14s}.tab:hover{color:var(--ink)}.tab.active{color:var(--ink);font-weight:800}.tab.active .tab-ic{color:var(--green-700)}.tab.active:after{content:"";background:var(--brand);border-radius:3px 3px 0 0;height:3px;position:absolute;bottom:-1px;left:10px;right:10px}.tab .tab-flag{background:var(--red-600);border-radius:50%;width:7px;height:7px}.banner{border-radius:var(--r);align-items:center;gap:11px;margin-bottom:16px;padding:13px 16px;font-size:13.5px;font-weight:600;display:flex}.banner svg{flex:none;width:19px;height:19px}.banner.info{background:var(--ink);color:#fff}.banner.info svg{color:var(--brand)}.banner.note{background:var(--green-50);color:var(--ink);border:1px solid var(--green-100);border-left:4px solid var(--brand)}.banner.note svg{color:var(--green-700)}.banner.warn{background:var(--amber-50);color:var(--amber-700)}.banner.success{background:var(--ok-50);color:var(--ok-700);border:1px solid var(--ok-100);border-left:4px solid var(--ok-500)}.banner.success svg{color:var(--ok-600)}.banner .banner-act{margin-left:auto}.toast{background:var(--red-600);color:#fff;border-radius:var(--r);box-shadow:var(--sh-md);z-index:200;padding:12px 18px;font-weight:600;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.switch{background:var(--line);border:none;border-radius:999px;flex:none;width:40px;height:23px;padding:0;transition:background .18s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:all .18s;position:absolute;top:2.5px;left:2.5px;box-shadow:0 1px 3px #00000040}.switch.on{background:var(--brand)}.switch.on:after{left:19px}.doc-row{border-bottom:1px solid var(--line-2);flex-wrap:wrap;align-items:center;gap:10px 13px;padding:12px 0;display:flex}.doc-row:last-child{border-bottom:none}.doc-row .doc-ic{border-radius:var(--r-sm);background:var(--green-50);width:36px;height:36px;color:var(--green-700);flex:none;place-items:center;display:grid}.doc-row .doc-ic.muted{background:var(--surface-2);border:1px solid var(--line);color:var(--muted)}.doc-row .doc-ic svg{width:18px;height:18px}.doc-row .doc-main{flex:240px;min-width:0}.doc-row .doc-name{white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;font-weight:700;overflow:hidden}.doc-row .doc-meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:12px;overflow:hidden}.doc-row .doc-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:6px;margin-left:auto;display:flex}.doc-row .doc-date-chip{padding:4px 9px;font-weight:600}.doc-row .doc-date-chip svg{color:var(--green-600)}.doc-row .doc-actions .icon-btn{width:32px;height:32px}.doc-row .doc-actions .icon-btn svg{width:16px;height:16px}.doc-row .doc-actions .icon-btn:disabled{opacity:.45;cursor:default;border-color:var(--line);background:var(--surface);color:var(--ink-2)}.doc-row .doc-prog{color:var(--ink-2);font-size:12px;font-weight:700}.doc-row .doc-err{color:var(--red-600);font-size:12px}.doc-row .u-name-input{border:1px solid var(--line);background:var(--surface);width:200px;max-width:42vw;color:var(--ink);border-radius:5px;padding:6px 10px;font-size:13px}.photo-group{margin-bottom:18px}.photo-group-title{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2);align-items:center;gap:7px;margin-bottom:11px;font-size:12.5px;font-weight:800;display:flex}.photo-group-title svg{color:var(--green-600)}.thumbs{flex-wrap:wrap;gap:8px;display:flex}.thumb{border-radius:var(--r-sm);border:1px solid var(--line);background-position:50%;background-size:cover;flex:none;width:74px;height:74px;position:relative;overflow:hidden}.thumb.ph{background:repeating-linear-gradient(45deg, var(--line-2), var(--line-2) 6px, var(--surface-2) 6px, var(--surface-2) 12px);color:var(--faint);place-items:center;display:grid}.thumb.ph svg{width:20px;height:20px}.thumb .cnt{color:#fff;background:#141205c7;border-radius:999px;padding:1px 6px;font-size:10px;font-weight:800;position:absolute;bottom:4px;right:4px}.thumb .thumb-spin{border:2px solid var(--line);border-top-color:var(--brand);will-change:transform;border-radius:50%;width:18px;height:18px;animation:.9s linear infinite mspin;display:block}.drawer-backdrop{z-index:60;opacity:0;pointer-events:none;background:#0f0e056b;transition:opacity .2s;position:fixed;inset:0}.drawer-backdrop.open{opacity:1;pointer-events:auto}.drawer{background:var(--surface);width:430px;max-width:92vw;box-shadow:var(--sh-lg);z-index:61;flex-direction:column;transition:transform .26s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%)}.drawer.open{transform:none}.drawer-head{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:18px 20px;display:flex}.drawer-head h3{font-family:var(--font-display);margin:0;font-size:16px;font-weight:800}.drawer-body{flex:1;padding:18px 20px;overflow-y:auto}.drawer-foot{border-top:1px solid var(--line);background:var(--surface);padding:14px 16px;box-shadow:0 -6px 14px -10px #0f0e052e}.comment{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r);margin-bottom:12px;padding:13px 15px}.comment-top{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.comment-top .who{font-size:13px;font-weight:800}.comment-top .tag{font-size:11px}.comment-top .when{color:var(--muted);margin-left:auto;font-size:11px}.comment-body{color:var(--ink-2);font-size:13px;line-height:1.55}.comment-input{background:var(--surface-2);border:1.5px solid var(--line);border-radius:var(--r);align-items:flex-end;gap:8px;padding:8px 9px;display:flex}.comment-input textarea{resize:none;background:0 0;border:none;outline:none;flex:1;max-height:120px;font-size:13.5px}.comment-input:focus-within{border-color:var(--brand);box-shadow:0 0 0 4px var(--green-50)}.comment-count{text-align:right;color:var(--muted);margin-top:5px;font-size:11px}.hu-date{display:inline-flex;position:relative}.hu-date--mui{display:block}.hu-date--mobile{flex:1;min-width:0;display:flex}.hu-date-ph{pointer-events:none;color:var(--muted);font-size:13px;font-family:var(--font);white-space:nowrap;display:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.hu-date--mui .hu-date-ph{font-size:16px;left:14px}.hu-date--mobile .hu-date-ph{font-size:15px;left:14px}@supports selector(::-webkit-datetime-edit){.hu-date.is-empty input::-webkit-datetime-edit{color:#0000}.hu-date.is-empty input::-webkit-datetime-edit-year-field{color:#0000!important;background-color:#0000!important}.hu-date.is-empty input::-webkit-datetime-edit-month-field{color:#0000!important;background-color:#0000!important}.hu-date.is-empty input::-webkit-datetime-edit-day-field{color:#0000!important;background-color:#0000!important}.hu-date.is-empty .hu-date-ph{display:block}}.modal-backdrop{z-index:70;background:#0f0e056b;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-lg);flex-direction:column;width:100%;max-width:500px;display:flex}.modal-header{border-bottom:1px solid var(--line);font-size:16px;font-weight:700;font-family:var(--font-display);justify-content:space-between;align-items:center;padding:18px 22px 14px;display:flex}.modal-body{padding:18px 22px}.modal-textarea{border:1.5px solid var(--line);border-radius:var(--r);resize:vertical;box-sizing:border-box;outline:none;width:100%;padding:10px 12px;font-family:inherit;font-size:13.5px}.modal-textarea:focus{border-color:var(--brand);box-shadow:0 0 0 4px var(--green-50)}.modal-footer{border-top:1px solid var(--line);justify-content:flex-end;gap:10px;padding:14px 22px 18px;display:flex}.detail-head{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:8px;display:flex}.detail-head .title{font-family:var(--font-display);letter-spacing:-.01em;white-space:nowrap;font-size:23px;font-weight:800}.metastrip{flex-wrap:wrap;gap:10px;margin:14px 0 20px;display:flex}.kv{margin-bottom:13px}.kv .k{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:2px;font-size:11px;font-weight:700}.kv .v{color:var(--ink);font-size:14.5px;font-weight:600}.kv .v.green{color:var(--green-700)}.sumgrid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;display:grid}.sumcard{border:1px solid var(--line);border-radius:var(--r);background:var(--surface-2);padding:14px 16px}.sumcard .lbl{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:7px;font-size:11px;font-weight:700}.sumcard .val{font-family:var(--font-display);color:var(--ink);font-size:24px;font-weight:800;line-height:1}.sumcard .val small{color:var(--muted);font-size:13px;font-weight:600}.timeline{padding-left:8px;position:relative}.tl-item{border-left:2px solid var(--line);padding:0 0 18px 24px;position:relative}.tl-item:last-child{border-left-color:#0000;padding-bottom:0}.tl-item:before{content:"";background:var(--brand);border:2.5px solid var(--surface);width:12px;height:12px;box-shadow:0 0 0 1px var(--green-100);border-radius:50%;position:absolute;top:2px;left:-7px}.tl-item.pending:before{background:var(--line);box-shadow:0 0 0 1px var(--line)}.tl-item .tl-label{color:var(--muted);font-size:12px;font-weight:600}.tl-item .tl-date{font-size:14.5px;font-weight:700}.login-wrap{background:var(--side);grid-template-rows:auto 1fr auto;min-height:100dvh;display:grid;position:relative;overflow:hidden}.login-topbar{background:var(--brand);color:var(--brand-ink);z-index:3;padding:12px 34px;padding-top:calc(12px + env(safe-area-inset-top,0px));flex-wrap:wrap;align-items:center;gap:26px;font-size:13px;font-weight:700;display:flex}.login-topbar .lt-item{align-items:center;gap:8px;display:flex}.login-topbar .lt-item svg{width:15px;height:15px}.login-topbar .lt-spacer{opacity:.78;letter-spacing:.02em;margin-left:auto;font-weight:600}.login-bottombar{color:var(--side-muted);z-index:3;padding:15px 34px;padding-bottom:calc(15px + env(safe-area-inset-bottom,0px));background:#000;flex-wrap:wrap;align-items:center;gap:20px;font-size:12px;display:flex}.login-bottombar a{color:var(--side-txt);font-weight:600;text-decoration:none}.login-bottombar a:hover{color:var(--brand)}.login-bottombar .lb-spacer{margin-left:auto}.login-center{z-index:2;place-items:center;padding:30px;display:grid;position:relative}.login-deco{z-index:1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.login-deco:before{content:"";background:radial-gradient(circle,#f4cb1c29,#0000 62%);border-radius:50%;width:760px;height:760px;position:absolute;top:-180px;right:-200px}.login-deco .arc{border:1px solid #f4cb1c1a;border-radius:50%;position:absolute}.login-deco .arc.a1{width:520px;height:520px;bottom:-200px;left:-160px}.login-deco .arc.a2{width:800px;height:800px;bottom:-340px;left:-300px}.login-card{background:var(--surface);border-radius:var(--r-lg);width:420px;max-width:calc(100vw - 60px);box-shadow:var(--sh-lg);z-index:2;padding:44px 40px 38px;position:relative}.login-card:before{content:"";border-style:solid;border-width:26px 26px 0 0;border-color:var(--brand) transparent transparent transparent;border-radius:var(--r-lg) 0 0 0;position:absolute;top:0;left:0}.lc-mark{align-items:center;gap:13px;margin-bottom:28px;display:flex}.lc-mark .m-tile{background:var(--ink);width:52px;height:52px;color:var(--brand);border-radius:9px;flex:none;place-items:center;display:grid}.lc-mark .m-tile svg{width:28px;height:28px}.lc-mark .m-name{font-family:var(--font-display);letter-spacing:.06em;white-space:nowrap;font-size:17px;font-weight:800;line-height:1.05}.lc-mark .m-sub{letter-spacing:.22em;text-transform:uppercase;color:var(--muted);white-space:nowrap;margin-top:4px;font-size:10px;font-weight:700}.login-card h2{font-family:var(--font-display);margin:0 0 4px;font-size:22px;font-weight:800}.login-card .lc-lead{color:var(--muted);margin:0 0 26px;font-size:13px;line-height:1.5}.login-card .fld{margin-bottom:14px}.login-foot{justify-content:space-between;align-items:center;gap:14px;margin-top:22px;display:flex}.login-foot a{text-transform:uppercase;letter-spacing:.04em;color:var(--green-700);font-size:12px;font-weight:800;text-decoration:none}.login-foot a:hover{color:var(--ink)}@media (width<=700px){.login-topbar{padding:10px 18px;padding-top:calc(10px + env(safe-area-inset-top,0px));gap:14px}.login-topbar .lt-spacer{display:none}.login-bottombar{padding:13px 18px;padding-bottom:calc(13px + env(safe-area-inset-bottom,0px));gap:14px}.login-bottombar .lb-spacer{display:none}.login-card{padding:34px 24px 30px}}.view-switch{background:var(--surface-2);border:1.5px solid var(--line);border-radius:var(--r);gap:3px;padding:3px;display:inline-flex}.vs-btn{border-radius:var(--r-sm);color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:7px 12px;font-family:inherit;font-size:12.5px;font-weight:700;transition:all .13s;display:inline-flex}.vs-btn:hover{color:var(--ink)}.vs-btn.on{background:var(--ink);color:#fff}.vs-btn.on svg{color:var(--brand)}.card-grid{grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:14px;display:grid}.c-card{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);cursor:pointer;box-shadow:var(--sh-sm);padding:16px;font-family:inherit;transition:all .15s;position:relative;overflow:hidden}.c-card:before{content:"";background:var(--brand);width:0;height:3px;transition:width .2s;position:absolute;top:0;left:0}.c-card:hover{border-color:var(--ink);box-shadow:var(--sh-md);transform:translateY(-2px)}.c-card:hover:before{width:100%}.cc-top{align-items:flex-start;gap:11px;margin-bottom:13px;display:flex}.cc-av{border-radius:var(--r-sm);background:var(--green-50);width:38px;height:38px;color:var(--green-700);flex-shrink:0;place-items:center;display:grid}.cc-owner{font-family:var(--font-display);font-size:15px;font-weight:800}.cc-town{color:var(--muted);margin-top:1px;font-size:12.5px}.cc-kiv{color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);align-items:center;gap:7px;margin-bottom:13px;padding:9px 11px;font-size:12.5px;font-weight:600;display:flex}.cc-kiv svg{color:var(--muted);flex-shrink:0}.cc-foot{gap:10px;display:flex}.cc-kv{flex:1}.cc-kv span{text-transform:uppercase;letter-spacing:.04em;color:var(--faint);margin-bottom:3px;font-size:10.5px;font-weight:700;display:block}.cc-kv b{font-size:12.5px;font-weight:700}.cc-go{color:var(--faint);position:absolute;bottom:14px;right:14px}.c-card:hover .cc-go{color:var(--green-700)}.kanban{grid-template-columns:repeat(5,minmax(220px,1fr));align-items:start;gap:13px;display:grid}.kb-col{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-lg);min-height:200px;padding:11px}.kb-head{align-items:center;gap:8px;margin-bottom:11px;padding:2px;display:flex}.kb-count{font-family:var(--mono);color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:999px;margin-left:auto;padding:1px 8px;font-size:12px;font-weight:700}.kb-body{flex-direction:column;gap:9px;display:flex}.kb-empty{color:var(--faint);text-align:center;padding:18px 0;font-size:12px;font-weight:600}.kb-card{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);cursor:pointer;box-shadow:var(--sh-sm);padding:12px;font-family:inherit;transition:all .14s}.kb-card:hover{border-color:var(--ink);transform:translate(2px)}.kb-card.accent{border-left:3px solid var(--brand)}.kb-owner{font-family:var(--font-display);font-size:13.5px;font-weight:800}.kb-town{color:var(--muted);align-items:center;gap:5px;margin-top:3px;font-size:11.5px;display:flex}.kb-town svg{color:var(--green-600)}.kb-kiv{color:var(--ink-2);border-top:1px solid var(--line-2);margin-top:7px;padding-top:7px;font-size:11.5px}@media (width<=1280px){.kanban{grid-template-columns:repeat(5,minmax(180px,1fr));overflow-x:auto}}.detail-cols{grid-template-columns:1.4fr 1fr;align-items:start;gap:18px;display:grid}@media (width<=1100px){.detail-cols{grid-template-columns:1fr!important}.grid-3{grid-template-columns:1fr 1fr}}@media (width<=760px){.grid-2,.grid-3{grid-template-columns:1fr}.topbar-search{width:180px}}.fade-in{opacity:1}@media (prefers-reduced-motion:no-preference){.fade-in{animation:.24s both fadeIn}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.hide-sb{scrollbar-width:none}.hide-sb::-webkit-scrollbar{display:none}.coming-soon{color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:60px 20px;display:flex}.coming-soon>svg{opacity:.4;width:48px;height:48px}.coming-soon p{text-align:center;max-width:360px;font-size:15px}.naplo-list{flex-direction:column;gap:10px;padding:12px;display:flex}.naplo-row{border:1px solid var(--line);border-radius:var(--r-md);background:var(--card);padding:12px 14px}.naplo-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.naplo-actor{color:var(--ink);font-size:13.5px;font-weight:600}.naplo-time{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:12.5px}.naplo-detail{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.naplo-arrow{color:var(--muted);font-weight:700}.naplo-msg{color:var(--ink);margin-top:6px;font-size:13px}.naplo-changes{color:var(--ink);flex-direction:column;gap:3px;margin:8px 0 0;padding-left:18px;font-size:13px;display:flex}.naplo-from{color:var(--muted)}.naplo-to{color:var(--ink);font-weight:600}.naplo-link{color:var(--green-700);border:1px solid var(--line);border-radius:5px;padding:2px 8px;font-size:12.5px;font-weight:700;text-decoration:none}.naplo-link:hover{background:var(--surface-2);border-color:var(--brand)}.audit-filters{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:12px;padding:12px;display:flex}.audit-filters label{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;font-weight:700;display:flex}.audit-filters select,.audit-filters input{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:5px;min-width:160px;padding:6px 10px;font-size:13px}.audit-filters select:focus,.audit-filters input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--green-50);outline:none}.audit-filters-actions{align-items:center;gap:8px;display:flex}.audit-pager{justify-content:center;align-items:center;gap:14px;padding:14px 12px;display:flex}.audit-pager-info{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.m-app{background:var(--bg);flex-direction:column;height:100dvh;display:flex;position:relative;overflow:hidden}@media (width>=640px){.m-app{border-inline:1px solid var(--line);max-width:460px;box-shadow:var(--sh-lg);margin-inline:auto}}.m-top{background:var(--side);color:#fff;padding:12px 18px 14px;padding-top:calc(14px + env(safe-area-inset-top,0px));flex:none}.m-top-row{align-items:center;gap:12px;display:flex}.m-top .back{color:#fff;background:#ffffff1a;border:none;border-radius:9px;place-items:center;width:34px;height:34px;display:grid}.m-top .back svg{width:18px;height:18px}.m-top .m-title{font-size:15px;font-weight:700}.m-top .m-sub{color:var(--side-muted);font-size:11.5px}.m-progress{gap:5px;margin-top:13px;display:flex}.m-progress .seg{background:#ffffff29;border-radius:999px;flex:1;height:4px}.m-progress .seg.on{background:var(--brand)}.m-body{flex:1;padding:16px;overflow-y:auto}.m-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-sm);margin-bottom:12px;padding:15px 16px}.m-card h4{font-family:var(--font-display);margin:0 0 4px;font-size:14px;font-weight:800}.m-stat-row{gap:10px;margin-bottom:12px;display:flex}.m-stat{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r);flex:1;padding:12px 14px}.m-stat .l{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:10.5px;font-weight:700}.m-stat .v{font-family:var(--font-display);color:var(--ink);margin-top:3px;font-size:20px;font-weight:800;line-height:1.1}.m-field{margin-bottom:12px}.m-field label{color:var(--ink-2);margin-bottom:5px;font-size:11.5px;font-weight:700;display:block}.m-field .inp{border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);justify-content:space-between;align-items:center;width:100%;padding:13px 14px;font-size:15px;display:flex}.m-field .inp.filled{background:var(--surface);font-weight:600}.m-photo-task{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);align-items:center;gap:12px;margin-bottom:9px;padding:13px 14px;display:flex}.m-photo-task .pt-ic{border-radius:var(--r-sm);flex:none;place-items:center;width:40px;height:40px;display:grid}.m-photo-task .pt-ic.done{background:var(--brand);color:var(--brand-ink)}.m-photo-task .pt-ic.todo{background:var(--surface-2);color:var(--muted);border:1.4px dashed var(--line)}.m-photo-task .pt-ic svg{width:19px;height:19px}.m-photo-task .pt-name{font-size:13px;font-weight:700;line-height:1.3}.m-photo-task .pt-meta{color:var(--muted);font-size:11.5px}.m-bottom{padding:12px 16px 26px;padding-bottom:calc(12px + env(safe-area-inset-bottom,14px));border-top:1px solid var(--line);background:var(--surface);flex:none;gap:10px;display:flex}.m-bottom .btn{flex:1;justify-content:center}.m-tabbar{border-top:1px solid var(--line);background:var(--surface);padding-bottom:10px;padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));flex:none;display:flex}.m-tab{color:var(--faint);background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:9px 0 4px;font-size:10px;font-weight:700;display:flex}.m-tab svg{width:21px;height:21px}.m-tab.active{color:var(--ink)}.m-tab.active svg{color:var(--green-700)}.m-role-switch{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r);gap:4px;width:100%;padding:4px;display:flex}.m-role-switch button{color:var(--muted);border-radius:var(--r-sm);background:0 0;border:none;flex:1;justify-content:center;align-items:center;gap:7px;padding:9px 0;font-size:12.5px;font-weight:700;transition:background .15s,color .15s;display:flex}.m-role-switch button svg{width:15px;height:15px}.m-role-switch button.on{background:var(--brand);color:var(--brand-ink);box-shadow:var(--sh-sm)}.m-top .m-head-top{align-items:center;gap:10px;display:flex}.m-top .m-head-right{flex-direction:column;align-items:flex-end;gap:3px;display:flex}.m-top .m-version{color:var(--side-muted);font-size:10px;font-weight:600;font-family:var(--mono);letter-spacing:.02em;white-space:nowrap}.m-top .grow{flex:1;min-width:0}.m-top .m-eyebrow{color:var(--brand);letter-spacing:.03em;text-transform:uppercase;font-size:11px;font-weight:700}.m-top .m-h1{font-family:var(--font-display);color:#fff;letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-size:19px;font-weight:800;overflow:hidden}.m-sync{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:5px 10px;font-size:11px;font-weight:800;display:inline-flex}.m-sync svg{width:13px;height:13px}.m-sync.online,.m-sync.syncing{color:var(--brand);background:#f4cb1c2e}.m-sync.offline{color:var(--red-300);background:#d63a2a29}.m-sync .spin{animation:1.1s linear infinite mspin}@keyframes mspin{to{transform:rotate(360deg)}}.m-offline-strip{background:var(--amber-50);border-bottom:1px solid var(--amber-100);color:var(--amber-700);flex:none;align-items:center;gap:9px;padding:9px 16px;font-size:12px;font-weight:700;display:flex}.m-offline-strip svg{flex:none;width:16px;height:16px}.m-offline-strip .x{margin-left:auto;font-weight:800}.m-section-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);align-items:center;gap:8px;margin:4px 2px 9px;font-size:11px;font-weight:800;display:flex}.m-section-label .ct{color:var(--faint);letter-spacing:0;text-transform:none;margin-left:auto;font-weight:700}.m-job{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);width:100%;box-shadow:var(--sh-sm);cursor:pointer;margin-bottom:11px;padding:14px 15px;transition:border-color .14s,box-shadow .14s,transform 50ms;display:block;position:relative}.m-job:active{transform:scale(.992)}.m-job.flag{box-shadow:0 0 0 3px var(--red-50);border-color:#f0b6ae}.m-job .jr-top{align-items:center;gap:10px;margin-bottom:9px;display:flex}.m-job .jr-name{font-family:var(--font-display);color:var(--ink);font-size:15px;font-weight:800}.m-job .jr-where{color:var(--muted);align-items:center;gap:5px;margin-top:1px;font-size:12.5px;display:flex}.m-job .jr-where svg{width:13px;height:13px;color:var(--green-600)}.m-job .jr-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:7px;margin-top:10px;font-size:11.5px;display:flex}.m-job .jr-pill{background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);border-radius:999px;align-items:center;gap:5px;padding:4px 9px;font-weight:700;display:inline-flex}.m-job .jr-pill svg{width:12px;height:12px}.m-job .jr-pill.dist{color:var(--green-700);border-color:var(--green-100);background:var(--green-50)}.m-job .jr-nav{border:1px solid var(--green-100);background:var(--green-50);width:34px;height:34px;color:var(--green-700);border-radius:999px;flex:none;justify-content:center;align-items:center;display:inline-flex}.m-job .jr-nav svg{width:16px;height:16px}.m-job .jr-nav:active{transform:scale(.94)}.m-job .jr-prog{align-items:center;gap:8px;margin-top:11px;display:flex}.m-job .jr-prog .bar{flex:1}.m-job .jr-prog .pct{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px;font-weight:800;font-family:var(--mono)}.m-job.sel{border-color:var(--blue-600);box-shadow:0 0 0 3px var(--blue-50)}.m-job .jr-sel{flex:none;align-items:center;display:inline-flex}.m-job .jr-sel input{width:20px;height:20px;accent-color:var(--blue-600)}.m-route-bar{background:var(--surface);border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:10px 16px;display:flex}.m-route-count{color:var(--ink-2);margin-right:auto;font-size:13px;font-weight:700}.m-chips{gap:7px;margin-bottom:12px;padding:0 2px 4px;display:flex;overflow-x:auto}.m-chips::-webkit-scrollbar{display:none}.m-chip{border:1.5px solid var(--line);background:var(--surface);color:var(--ink-2);border-radius:999px;flex:none;align-items:center;gap:6px;padding:7px 13px;font-size:12.5px;font-weight:700;display:inline-flex}.m-chip .n{background:var(--line-2);color:var(--muted);border-radius:999px;padding:0 6px;font-size:10.5px;font-weight:800}.m-chip.on{background:var(--side);color:#fff;border-color:var(--side)}.m-chip.on .n{background:var(--brand);color:var(--brand-ink)}.m-jobhead{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-sm);margin-bottom:14px;padding:15px}.m-jobhead .addr{color:var(--ink-2);align-items:center;gap:7px;margin-top:4px;font-size:13px;display:flex}.m-jobhead .addr svg{width:15px;height:15px;color:var(--green-600)}.m-jobhead .nav-btn{justify-content:center;width:100%;margin-top:12px}.m-step{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);width:100%;box-shadow:var(--sh-sm);align-items:center;gap:13px;margin-bottom:10px;padding:14px 15px;transition:all .14s;display:flex}.m-step:active{transform:scale(.99)}.m-step:disabled{opacity:.55}.m-step .st-ic{border-radius:var(--r-sm);flex:none;place-items:center;width:42px;height:42px;display:grid}.m-step .st-ic svg{width:21px;height:21px}.m-step .st-ic.done{background:var(--brand);color:var(--brand-ink)}.m-step .st-ic.active{background:var(--ink);color:var(--brand);box-shadow:0 0 0 3px var(--green-50)}.m-step .st-ic.todo{background:var(--surface-2);border:1px solid var(--line);color:var(--muted)}.m-step .st-ic.lock{background:var(--surface-2);border:1px solid var(--line);color:var(--faint)}.m-step .st-ic.req{background:var(--surface-2);border:1px solid var(--line);color:var(--muted)}.m-step .st-name{font-family:var(--font-display);font-size:14px;font-weight:800}.m-step .st-meta{color:var(--muted);margin-top:1px;font-size:12px}.m-seg{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r);gap:4px;margin-bottom:14px;padding:4px;display:flex}.m-seg button{border-radius:var(--r-sm);color:var(--muted);background:0 0;border:none;flex:1;justify-content:center;align-items:center;gap:7px;padding:9px 0;font-size:13px;font-weight:700;display:flex}.m-seg button svg{width:15px;height:15px}.m-seg button.on{background:var(--surface);color:var(--ink);box-shadow:var(--sh-sm)}.m-seg button .miss{background:var(--amber-500);border-radius:50%;width:7px;height:7px}.m-autosave{color:var(--green-700);align-items:center;gap:6px;margin:-4px 2px 12px;font-size:11.5px;font-weight:700;display:flex}.m-autosave svg{width:13px;height:13px;color:var(--green-600)}.m-checkhead{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-sm);align-items:center;gap:12px;margin-bottom:14px;padding:13px 15px;display:flex}.m-checkhead .ring{flex:none;place-items:center;width:42px;height:42px;display:grid;position:relative}.m-checkhead .ring .num{color:var(--green-700);font-size:12px;font-weight:800;font-family:var(--mono)}.m-checkhead .ct{font-family:var(--font-display);color:var(--ink);font-size:14px;font-weight:800}.m-checkhead .sub{color:var(--muted);font-size:11.5px}.m-photo-task .pt-ic.req{background:var(--ink);color:var(--brand)}.m-photo-task .pt-count{font-variant-numeric:tabular-nums;font-size:12px;font-weight:800;font-family:var(--mono);border-radius:var(--r-sm);padding:4px 9px}.m-photo-task .pt-count.ok{background:var(--green-50);color:var(--green-700)}.m-photo-task .pt-count.miss{background:var(--amber-50);color:var(--amber-700)}.m-photo-task .pt-count.opt{background:var(--line-2);color:var(--muted)}.pt-up{align-items:center;gap:4px;margin-top:3px;font-size:10.5px;font-weight:800;display:inline-flex}.pt-up svg{width:12px;height:12px}.pt-up.queued{color:var(--amber-500)}.pt-up.uploading{color:var(--blue-600)}.pt-up.done{color:var(--green-600)}.m-sheet-wrap{z-index:45;flex-direction:column;justify-content:flex-end;display:flex;position:absolute;inset:0}.m-sheet-back{background:#0b0b0973;border:none;position:absolute;inset:0}.m-sheet{background:var(--surface);padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px));box-shadow:var(--sh-lg);border-top-left-radius:14px;border-top-right-radius:14px;position:relative}.m-sheet-head{padding:2px 4px 12px}.m-sheet-title{color:var(--ink);font-size:15px;font-weight:800}.m-sheet-sub{color:var(--muted);margin-top:2px;font-size:12.5px}.m-sheet-note{color:var(--muted);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg);margin:0 4px 12px;padding:9px 11px;font-size:12px;line-height:1.45}.m-sheet-row{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);width:100%;color:var(--ink);align-items:center;gap:12px;margin-bottom:9px;padding:13px 14px;font-size:14px;font-weight:700;text-decoration:none;display:flex}.m-sheet-row>span{flex:1}.m-sheet-row svg:first-child{color:var(--green-700);flex:none}.m-sheet-row svg:last-child{color:var(--muted);flex:none}.m-sheet-row:active{background:var(--green-50);transform:scale(.99)}.m-sheet-cancel{justify-content:center;width:100%;margin-top:4px}.m-queue-row{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);align-items:center;gap:12px;margin-bottom:9px;padding:13px 14px;display:flex}.m-queue-row .q-ic{border-radius:var(--r-sm);flex:none;place-items:center;width:40px;height:40px;display:grid}.m-queue-row .q-ic svg{width:19px;height:19px}.m-queue-row .q-ic.uploading{background:var(--blue-50);color:var(--blue-600)}.m-queue-row .q-ic.queued{background:var(--amber-50);color:var(--amber-500)}.m-queue-row .q-ic.done{background:var(--green-50);color:var(--green-700)}.m-queue-row .q-ic.conflict{background:var(--red-50);color:var(--red-600)}.m-queue-row.conflict{border-color:var(--red-600);background:var(--red-50)}.m-queue-row .q-name{font-size:13px;font-weight:700}.m-queue-row .q-meta{color:var(--muted);margin-top:2px;font-size:11px}.m-queue-row .bar{height:5px;margin-top:6px}.m-conflict-actions{gap:8px;margin-top:9px;display:flex}.m-queue-sum{border-radius:var(--r-lg);align-items:center;gap:12px;margin-bottom:14px;padding:14px 15px;display:flex}.m-queue-sum.on{background:var(--green-50);border:1px solid var(--green-100)}.m-queue-sum.off{background:var(--amber-50);border:1px solid var(--amber-100)}.m-queue-sum .qs-ic{border-radius:50%;flex:none;place-items:center;width:40px;height:40px;display:grid}.m-queue-sum.on .qs-ic{background:var(--brand);color:var(--brand-ink)}.m-queue-sum.off .qs-ic{background:var(--amber-500);color:#fff}.m-queue-sum .qs-t{font-family:var(--font-display);font-size:14px;font-weight:800}.m-queue-sum.on .qs-t{color:var(--green-700)}.m-queue-sum.off .qs-t{color:var(--amber-700)}.m-queue-sum .qs-s{color:var(--ink-2);margin-top:2px;font-size:11.5px}.m-sub-row{border-bottom:1px solid var(--line-2);align-items:center;gap:11px;padding:13px 0;display:flex}.m-sub-row:last-child{border-bottom:none}.m-sub-row .sr-ic{border-radius:var(--r-sm);flex:none;place-items:center;width:30px;height:30px;display:grid}.m-sub-row .sr-ic svg{width:16px;height:16px}.m-sub-row .sr-ic.ok{background:var(--brand);color:var(--brand-ink)}.m-sub-row .sr-ic.miss{background:var(--amber-50);color:var(--amber-500)}.m-sub-row .sr-name{flex:1;font-size:13.5px;font-weight:700}.m-sub-row .sr-val{color:var(--muted);font-size:12px;font-family:var(--mono);font-weight:600}.m-load{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);align-items:center;gap:10px;margin-bottom:9px;padding:12px 14px;display:flex}.ld-av{border-radius:var(--r-sm);width:36px;height:36px;color:var(--brand);background:var(--ink);font-size:12px;font-weight:800;font-family:var(--font-display);flex:none;place-items:center;display:grid}.ld-name{font-size:13px;font-weight:700}.ld-meta{color:var(--muted);font-size:11px}.m-load .ld-n{color:var(--green-700);margin-left:auto;font-size:12px;font-weight:800}.m-assign-opt{border:1.5px solid var(--line);border-radius:var(--r);background:var(--surface);align-items:center;gap:11px;margin-bottom:9px;padding:12px 14px;display:flex}.m-assign-opt.sel{border-color:var(--brand);box-shadow:0 0 0 3px var(--green-50)}.m-assign-opt .ao-radio{border:2px solid var(--line);border-radius:50%;flex:none;place-items:center;width:20px;height:20px;display:grid}.m-assign-opt.sel .ao-radio{border-color:var(--brand)}.m-assign-opt.sel .ao-radio:after{content:"";background:var(--brand);border-radius:50%;width:10px;height:10px}.m-empty{text-align:center;color:var(--faint);padding:50px 20px}.m-empty svg{width:40px;height:40px;margin-bottom:10px}.m-empty .et{color:var(--muted);font-size:14px;font-weight:700}
