/* Design system: calm enterprise workbench; blue/white, system Chinese typography,
   4/8px spacing, 44px targets, native dialogs and visible keyboard focus.
   UI/UX Pro Max local search scripts are absent; its accessibility/feedback rules
   are applied directly. No remote fonts, trackers or default demonstration data. */
:root{--primary:#2463eb;--primary-dark:#174bbf;--primary-soft:#edf3ff;--surface:#fff;--background:#f5f7fb;--text:#17243b;--muted:#5e6c82;--border:#e0e7f0;--danger:#b52e3b;--success:#14775a;--warning:#956011;--radius:12px;--shadow:0 8px 32px #2137560b;--motion:180ms;--sidebar:232px;--layer-toast:100;--font:"Segoe UI","Microsoft YaHei","PingFang SC",system-ui,sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--background);color:var(--text);font:15px/1.6 var(--font)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a,select{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}[hidden]{display:none!important}:focus-visible{outline:3px solid #92b4ff;outline-offset:3px}h1,h2,h3,p{margin-top:0}h1{font-size:26px;line-height:1.35;letter-spacing:.01em;margin-bottom:8px}h2{font-size:20px;line-height:1.4}h3{font-size:16px;margin-bottom:12px}.muted,.help{color:var(--muted)}.help{font-size:13px;margin:6px 0 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:8px;left:16px;z-index:200;background:var(--surface);padding:12px;transform:translateY(-200%)}.skip-link:focus{transform:none}svg{width:20px;height:20px;flex:none;vertical-align:middle}
.app-layout{display:flex;min-height:100dvh}.sidebar{width:var(--sidebar);position:fixed;inset:0 auto 0 0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:10px;padding:24px 16px;color:var(--text);font-size:16px;font-weight:700;line-height:1.4}.brand:hover{text-decoration:none}.brand small{display:block;font-size:11px;color:var(--muted);font-weight:400;margin-top:4px}.brand-mark{display:grid;place-items:center;flex:none;width:38px;height:38px;border-radius:10px;background:var(--primary);color:white}.brand-mark svg{width:26px;height:26px}nav{flex:1;overflow:auto;padding:0 12px 16px}.nav-group{margin-top:18px}.nav-label{font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.08em;padding:0 12px;margin:0 0 6px}.nav-item{display:flex;align-items:center;gap:10px;min-height:44px;padding:8px 12px;color:var(--muted);font-size:14px;border-radius:8px;margin:2px 0;transition:background var(--motion),color var(--motion)}.nav-item:hover{background:var(--background);text-decoration:none;color:var(--text)}.nav-item.active{color:var(--primary);background:var(--primary-soft);font-weight:600}.nav-item svg{width:18px;height:18px}.sidebar-footer{padding:16px 20px;border-top:1px solid var(--border);color:var(--muted);font-size:12px}.sidebar-footer small{display:block;padding-left:15px}.local-dot{display:inline-block;background:var(--success);width:7px;height:7px;border-radius:50%;margin-right:5px}.app-body{width:calc(100% - var(--sidebar));margin-left:var(--sidebar);min-width:0}.topbar{height:80px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 32px}.team-picker{min-width:140px}.eyebrow{display:block;color:var(--muted);font-size:11px;letter-spacing:.06em}.team-picker select{border:0;font-weight:650;padding:0 24px 0 0;height:34px;background:transparent;max-width:270px;color:var(--text)}.topbar-actions{display:flex;align-items:center;gap:12px}.user-label{font-size:13px;color:var(--muted)}.topbar .mobile-menu{display:none}.button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 16px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:14px;font-weight:500;text-decoration:none;transition:background var(--motion),border-color var(--motion)}.button:hover{background:var(--background);text-decoration:none}.button.primary{background:var(--primary);border-color:var(--primary);color:#fff}.button.primary:hover{background:var(--primary-dark)}.button.ghost{border-color:transparent;background:transparent}.button.danger{color:var(--danger);border-color:#ebc8cd}.button.small{padding:7px 12px;font-size:13px;min-height:44px}.icon-button{min-width:44px;min-height:44px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--muted);display:inline-grid;place-items:center}.icon-button:hover{background:var(--background)}.button-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
main{padding:28px 32px;min-height:calc(100dvh - 136px)}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:24px}.page-header p{color:var(--muted);margin-bottom:0;font-size:14px}.page-heading{min-width:0}.breadcrumb{font-size:12px;color:var(--muted);margin-bottom:8px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);margin-bottom:20px}.panel.flush{padding:0;overflow:hidden}.panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.filter-grid{display:grid;grid-template-columns:minmax(160px,2fr) repeat(3,minmax(130px,1fr));gap:16px}.filter-grid .button-row{align-self:end}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label,.field-label{font-size:13px;color:var(--text);font-weight:600}.field input:not([type=checkbox]):not([type=radio]):not([type=color]),.field select,.field textarea{width:100%;min-height:44px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);padding:10px 12px}.field textarea{resize:vertical;min-height:100px}.field input[type=color]{height:44px;width:100%;border:1px solid var(--border);border-radius:8px;padding:5px;background:var(--surface)}.field select[multiple]{min-height:118px}.field input:read-only,.field textarea:read-only{background:var(--background)}input[type=checkbox],input[type=radio]{accent-color:var(--primary);width:18px;height:18px;vertical-align:middle}.check-label{display:inline-flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font-size:14px}.filter-divider{margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}.result-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:20px 0 16px}.result-bar p{margin:0;color:var(--muted);font-size:13px}.selection-bar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;background:var(--primary-soft);border:1px solid #cfe0ff;padding:12px 16px;border-radius:10px;margin-bottom:16px}.selection-bar strong{margin-right:auto;font-size:14px}
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:18px}.photo-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;transition:border-color var(--motion),box-shadow var(--motion)}.photo-card.selected{border-color:var(--primary);box-shadow:0 0 0 2px #2463eb24}.photo-media-button{display:block;padding:0;border:0;background:#e9eef5;width:100%;cursor:pointer;aspect-ratio:4/3;overflow:hidden}.photo-media-button img,.photo-media-button video{width:100%;height:100%;object-fit:cover}.photo-check{position:absolute;top:8px;left:8px;background:#ffffffed;border-radius:7px;padding:8px;min-width:44px;min-height:44px;display:grid;place-items:center;box-shadow:0 2px 8px #17243b1a}.photo-check input{margin:0}.media-label{position:absolute;right:10px;top:12px;font-size:11px;border-radius:5px;background:#132039b5;color:#fff;padding:3px 7px;pointer-events:none}.photo-info{padding:14px 16px}.photo-name{display:block;width:100%;text-align:left;border:0;background:none;color:var(--text);font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:36px;padding:0}.photo-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:12px;gap:8px}.photo-location{display:block;color:var(--muted);font-size:12px;margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-state{text-align:center;padding:60px 24px;background:var(--surface);border:1px dashed #cbd6e6;border-radius:12px}.empty-icon{display:grid;place-items:center;border-radius:16px;width:64px;height:64px;background:var(--primary-soft);color:var(--primary);margin:0 auto 18px}.empty-icon svg{width:32px;height:32px}.empty-state h2{font-size:19px;margin-bottom:8px}.empty-state p{color:var(--muted);font-size:14px;max-width:480px;margin:0 auto 20px}.empty-state .button-row{justify-content:center}.pagination{display:flex;align-items:center;justify-content:center;gap:16px;margin:28px 0 0;color:var(--muted);font-size:13px}.banner{border:1px solid var(--border);border-radius:8px;padding:12px 16px;margin-bottom:16px;font-size:14px;background:var(--surface)}.banner.error{color:var(--danger);background:#fff3f4;border-color:#efccd1}.banner.info{background:var(--primary-soft);border-color:#d3e0fb;color:#244774}.banner.warning{color:var(--warning);background:#fff8e7;border-color:#eaddb9}#global-error{margin:16px 32px 0}.loading{display:flex;align-items:center;justify-content:center;gap:12px;padding:70px;color:var(--muted)}.spinner{width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,#eef2f7,#f8fafc,#eef2f7);background-size:200% 100%;animation:shine 1.5s ease infinite;border-radius:12px;aspect-ratio:4/3}@keyframes shine{to{background-position:-200% 0}}
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.metric{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px 24px}.metric .metric-label{color:var(--muted);font-size:13px;display:block}.metric strong{display:block;font-size:30px;font-weight:650;font-variant-numeric:tabular-nums;margin-top:6px}.metric small{font-size:12px;color:var(--muted)}.chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.bar-row{display:grid;grid-template-columns:minmax(70px,1fr) minmax(70px,3fr) 44px;align-items:center;gap:12px;margin:14px 0;font-size:13px}.bar-label{overflow-wrap:anywhere}.bar-track{height:10px;background:var(--background);border-radius:20px;overflow:hidden}.bar-fill{display:block;height:100%;min-width:2px;background:var(--primary);border-radius:20px}.bar-row strong{text-align:right;font-variant-numeric:tabular-nums}.table-wrap{overflow:auto;width:100%}table{width:100%;border-collapse:collapse;font-size:14px;text-align:left}th,td{padding:14px 18px;border-bottom:1px solid var(--border);vertical-align:middle}th{font-size:12px;color:var(--muted);background:#f9fbfe;font-weight:600;white-space:nowrap}td{overflow-wrap:anywhere}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fbfcff}.table-actions{display:flex;gap:8px;justify-content:flex-end;min-width:150px}.badge{display:inline-flex;align-items:center;font-size:12px;font-weight:500;padding:3px 10px;border-radius:20px;background:var(--primary-soft);color:#2454aa;white-space:nowrap}.badge.success{background:#eaf7f1;color:var(--success)}.badge.warning{background:#fff3d5;color:var(--warning)}.badge.error{background:#fff0f1;color:var(--danger)}.mono{font-family:Consolas,monospace;font-size:12px;overflow-wrap:anywhere}.progress{width:100%;height:8px;accent-color:var(--primary);display:block;margin-top:8px}.task-card{padding:20px;border:1px solid var(--border);border-radius:12px;background:var(--surface);margin-bottom:14px}.task-header{display:flex;align-items:center;gap:12px;justify-content:space-between}.task-info{color:var(--muted);font-size:13px;margin:8px 0 14px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}.resource-card{border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:20px}.resource-card p{font-size:13px;color:var(--muted);min-height:36px}.resource-card h2{font-size:17px;margin-bottom:8px}.watermark-mini{background:#edf2f8;border-radius:8px;padding:20px;min-height:130px;display:flex;align-items:flex-end;margin:16px 0}.watermark-mini-block{background:#ffffffdc;padding:10px 14px;border-left:4px solid var(--primary);font-size:12px;line-height:1.7;max-width:100%}.watermark-mini-block strong{font-size:15px;display:block}.workspace-footer{display:flex;justify-content:space-between;gap:16px;padding:16px 32px;color:var(--muted);font-size:11px;border-top:1px solid var(--border)}
.modal,.detail-drawer{padding:0;border:0;border-radius:16px;background:var(--surface);color:var(--text);box-shadow:0 20px 90px #15284433;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);width:760px;overflow:auto}.modal::backdrop,.detail-drawer::backdrop{background:#17243b80}.modal-head,.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface);z-index:1}.modal-head h2,.drawer-head h2{font-size:20px;margin:0}.modal-body{padding:24px}.modal-footer{padding:16px 24px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end;background:var(--surface);position:sticky;bottom:0;z-index:1}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.span-2{grid-column:1/-1}.form-error{margin-top:16px}.detail-drawer{width:720px;max-width:min(900px,96vw);height:100dvh;max-height:100dvh;border-radius:16px 0 0 16px;margin:0 0 0 auto}.drawer-body{padding:24px}.detail-media{width:100%;max-height:430px;background:#e9eef5;object-fit:contain;border-radius:10px}.detail-metadata{display:grid;grid-template-columns:90px 1fr;gap:8px 16px;font-size:13px;margin:22px 0}.detail-metadata dt{color:var(--muted)}.detail-metadata dd{margin:0;overflow-wrap:anywhere}.divider{border:0;border-top:1px solid var(--border);margin:24px 0}.watermark-field-row{border:1px solid var(--border);background:var(--background);border-radius:10px;padding:16px;margin-bottom:12px}.watermark-field-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.watermark-field-row .form-grid{gap:12px}.preview-canvas{display:block;max-width:100%;height:auto;border:1px solid var(--border);border-radius:8px;margin:16px auto;background:#e9eef5}.canvas-empty{padding:32px;border:1px dashed var(--border);border-radius:10px;text-align:center;color:var(--muted);font-size:13px}.file-drop{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;min-height:160px;background:var(--primary-soft);border:1px dashed #a3bdf2;border-radius:12px;padding:24px;text-align:center}.file-drop input{max-width:100%}.upload-progress{margin-top:16px;font-size:13px;color:var(--muted)}.auth-layout{min-height:100dvh;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:80px;padding:60px max(32px,calc((100vw - 1120px)/2))}.auth-intro{max-width:520px}.auth-intro .brand-mark{width:56px;height:56px;margin-bottom:32px}.auth-intro h1{font-size:40px;line-height:1.25;margin-bottom:20px}.auth-intro p{font-size:16px;color:var(--muted);max-width:450px}.auth-points{list-style:none;padding:0;margin:28px 0;color:var(--muted)}.auth-points li{display:flex;gap:10px;margin:14px 0}.auth-card{padding:36px;background:var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow)}.auth-card h2{margin-bottom:8px}.auth-card .field{margin-top:18px}.auth-card .button.primary{width:100%;margin-top:24px}.toasts{position:fixed;bottom:24px;right:24px;z-index:var(--layer-toast);display:flex;flex-direction:column;gap:12px;max-width:min(420px,calc(100vw - 32px));pointer-events:none}.toast{background:var(--text);color:#fff;border-radius:10px;padding:14px 18px;box-shadow:var(--shadow);font-size:14px;pointer-events:auto}.toast.error{background:var(--danger)}.resource-tabs{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}.permission-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.permission-card{padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:12px}.permission-card p{font-size:13px;color:var(--muted)}.no-wrap{white-space:nowrap}
@media(min-width:1600px){main{max-width:1800px;margin:auto}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}}
@media(max-width:1200px){:root{--sidebar:210px}.topbar,main{padding-left:24px;padding-right:24px}.filter-grid{grid-template-columns:repeat(3,minmax(120px,1fr))}.permission-grid{grid-template-columns:1fr 1fr}.auth-layout{gap:40px}}
@media(max-width:900px){:root{--sidebar:190px}.brand{font-size:14px;padding:20px 12px}.brand small{font-size:10px}.topbar{padding:12px 20px}.topbar-actions{gap:6px}.user-label{display:none}main{padding:24px 20px}.metric-grid{grid-template-columns:1fr 1fr}.filter-grid{grid-template-columns:1fr 1fr}.chart-grid{grid-template-columns:1fr}.page-header{gap:12px}.page-header .button-row{justify-content:flex-end}.auth-layout{display:block;padding:40px 24px}.auth-intro{max-width:520px;margin:0 auto 32px}.auth-intro h1{font-size:32px}.auth-intro .auth-points{display:none}.auth-card{max-width:520px;margin:auto}}
@media(max-width:700px){.sidebar{transform:translateX(-100%);transition:transform var(--motion);width:250px;box-shadow:var(--shadow)}.sidebar.open{transform:none}.app-body{width:100%;margin:0}.topbar .mobile-menu{display:inline-grid}.topbar{height:auto;min-height:76px;padding:12px 16px;gap:8px;flex-wrap:wrap}.topbar-actions{margin-left:auto}.topbar-actions>.primary{padding:8px 12px}.team-picker{min-width:100px;max-width:160px}.team-picker select{max-width:150px}.topbar .ghost{font-size:12px;padding:8px}.eyebrow{font-size:10px}main{padding:20px 16px}.page-header{flex-direction:column;margin-bottom:20px}.page-header .button-row{justify-content:flex-start}h1{font-size:24px}.panel{padding:16px}.filter-grid{gap:12px}.filter-grid .field:first-child{grid-column:1/-1}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.photo-info{padding:10px 12px}.photo-meta{flex-direction:column;gap:0}.metric{padding:16px}.metric strong{font-size:26px}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.modal-head,.drawer-head{padding:16px}.modal-body,.drawer-body{padding:16px}.modal-footer{padding:12px 16px}.modal{max-width:calc(100vw - 20px);max-height:calc(100dvh - 20px)}.detail-drawer{width:100%;max-width:100%;border-radius:0}.selection-bar{gap:8px}.selection-bar strong{width:100%}.selection-bar .button{padding:8px 12px}.workspace-footer{padding:16px;display:block}.workspace-footer span{display:block}.permission-grid{grid-template-columns:1fr}.result-bar{align-items:flex-start}.result-bar .button-row{justify-content:flex-end}.field input,.field select,.field textarea{font-size:16px}.auth-card{padding:24px}.auth-intro p{font-size:14px}.auth-intro h1{font-size:30px}.toasts{right:16px;bottom:16px}.table-wrap table{min-width:620px}#global-error{margin:12px 16px 0}.bar-row{grid-template-columns:minmax(60px,1fr) minmax(60px,2fr) 36px}.task-header{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.spinner{border-style:dashed}}

.option-tree{max-height:420px;overflow:auto;border:1px solid #dfe6ee;padding:12px;border-radius:10px}.option-tree-node{margin-top:8px}.option-tree-line{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.option-tree-line input{flex:1;min-width:140px}.option-tree-line .button{padding:6px 9px;min-height:34px}.option-tree summary{color:#5e6c82;cursor:pointer;margin:6px 0}.option-tree details{border-left:1px solid #dfe6ee;padding-left:8px}

.watermark-row-summary{font-weight:600;color:#182638;cursor:pointer;padding:12px 4px}.watermark-field-row[open]>.watermark-row-summary{margin-bottom:12px;border-bottom:1px solid #dfe6ee}[data-option-controls][hidden]{display:none}
.ledger-table{min-width:1180px;font-size:13px}.ledger-table th,.ledger-table td{padding:12px;line-height:1.65;word-break:normal;overflow-wrap:break-word}.ledger-table th{white-space:nowrap}.ledger-table .ledger-select{width:44px;min-width:44px}.ledger-table .ledger-photo{width:230px;min-width:210px}.ledger-photo-button{border:0;background:transparent;color:var(--primary);display:flex;align-items:center;gap:10px;padding:0;max-width:230px;text-align:left;cursor:pointer;font:inherit}.ledger-photo-button img,.ledger-video{width:72px;height:64px;object-fit:cover;border-radius:7px;flex-shrink:0}.ledger-video{display:grid;place-items:center;background:var(--primary-soft)}.ledger-photo-button span:last-child{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:140px}.ledger-table .ledger-value{min-width:90px;max-width:200px}.ledger-table .ledger-inspection{min-width:190px;max-width:300px}.ledger-table .ledger-time{min-width:150px;white-space:nowrap;font-variant-numeric:tabular-nums}
