:root { --ink:#102a43; --forest:#0b315b; --green:#f28c28; --lime:#ffb23e; --paper:#f3f6f9; --white:#fff; --muted:#60778c; --line:#dce6ef; --danger:#c84f4f; --shadow:0 18px 60px rgba(7,39,76,.12); }
* { box-sizing:border-box; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:"Microsoft YaHei UI","PingFang SC",Arial,sans-serif; -webkit-font-smoothing:antialiased; }
button,input,select,textarea { font:inherit; }
button { color:inherit; }
a { color:inherit; text-decoration:none; }
[hidden] { display:none !important; }
.brand-mark { width:30px; height:34px; display:grid; grid-template-columns:repeat(3,6px); align-items:end; gap:3px; transform:skew(-18deg); }
.brand-mark i { background:var(--lime); }
.brand-mark i:nth-child(1){height:55%}.brand-mark i:nth-child(2){height:100%}.brand-mark i:nth-child(3){height:72%}

.login-view { min-height:100vh; display:grid; grid-template-columns:1fr minmax(420px, 560px); align-items:center; gap:8vw; padding:6vw 10vw; color:white; background:linear-gradient(105deg,rgba(11,49,91,.98),rgba(11,49,91,.86)),url('/assets/projects/hero-airport.webp') center/cover; overflow:hidden; }
.login-brand { position:absolute; top:48px; left:5vw; display:flex; gap:13px; align-items:center; }
.login-brand b { display:block; letter-spacing:.12em; }
.login-brand span { display:block; margin-top:5px; font-size:8px; letter-spacing:.22em; opacity:.6; }
.login-card { grid-column:2; padding:52px; color:var(--ink); background:white; box-shadow:0 35px 100px rgba(0,0,0,.28); }
.login-kicker { color:var(--green); font-size:10px; font-weight:800; letter-spacing:.2em; }
.login-card h1 { margin:15px 0 4px; font-size:36px; }
.login-card > p { margin:0 0 30px; color:var(--muted); font-size:13px; }
.login-card label { display:grid; gap:8px; margin:20px 0; }
.login-card label span { font-size:12px; font-weight:700; }
.login-card input { padding:13px 0; border:0; border-bottom:1px solid var(--line); outline:0; }
.login-card input:focus { border-color:var(--green); }
.login-card button[type="submit"] { width:100%; margin-top:12px; padding:15px 20px; display:flex; justify-content:space-between; border:0; background:var(--forest); color:white; font-weight:700; cursor:pointer; }
.login-card button span { color:var(--lime); }
.login-card > a { display:block; margin-top:22px; text-align:center; color:var(--muted); font-size:12px; }
.login-status { min-height:20px; margin:12px 0 0 !important; color:var(--danger) !important; }
.login-decoration { position:absolute; left:5vw; bottom:7vh; display:flex; gap:30px; color:rgba(255,255,255,.25); font-size:10px; letter-spacing:.24em; }

.admin-app { min-height:100vh; }
.sidebar { position:fixed; inset:0 auto 0 0; z-index:20; width:245px; display:flex; flex-direction:column; color:white; background:var(--forest); transition:transform .25s; }
.sidebar-brand { height:86px; padding:0 25px; display:flex; gap:13px; align-items:center; border-bottom:1px solid rgba(255,255,255,.12); }
.sidebar-brand b { display:block; letter-spacing:.11em; }
.sidebar-brand span { display:block; margin-top:5px; color:var(--lime); font-size:8px; letter-spacing:.2em; }
.sidebar nav { min-height:0; padding:22px 14px; display:grid; gap:4px; overflow-y:auto; }
.sidebar nav button { position:relative; padding:12px 14px; display:flex; align-items:center; gap:14px; border:0; background:transparent; color:rgba(255,255,255,.6); text-align:left; font-size:13px; cursor:pointer; }
.sidebar nav button > span { width:18px; color:var(--lime); text-align:center; }
.sidebar nav button:hover,.sidebar nav button.active { color:white; background:rgba(255,255,255,.08); }
.sidebar nav button.active::before { content:""; position:absolute; left:-14px; top:10px; bottom:10px; width:3px; background:var(--lime); }
.nav-badge { margin-left:auto; min-width:19px; height:19px; display:grid; place-items:center; border-radius:10px; color:var(--forest); background:var(--lime); font-size:10px; }
.nav-badge:empty { display:none; }
.sidebar-bottom { margin-top:auto; padding:22px; display:grid; gap:10px; border-top:1px solid rgba(255,255,255,.12); }
.sidebar-bottom a,.sidebar-bottom button { padding:9px 0; border:0; color:rgba(255,255,255,.55); background:transparent; font-size:12px; text-align:left; cursor:pointer; }
.sidebar-bottom a:hover,.sidebar-bottom button:hover { color:white; }
.admin-main { min-height:100vh; margin-left:245px; }
.admin-header { height:86px; padding:0 36px; display:flex; align-items:center; justify-content:space-between; background:white; border-bottom:1px solid var(--line); }
.admin-header > div:first-of-type { flex:1; }
.admin-header span { color:var(--green); font-size:9px; font-weight:800; letter-spacing:.2em; }
.admin-header h1 { margin:2px 0 0; font-size:21px; }
.admin-user { display:flex; align-items:center; gap:10px; }
.admin-user > span { width:36px; height:36px; display:grid; place-items:center; border-radius:50%; color:var(--forest); background:var(--lime); font-size:14px; }
.admin-user b,.admin-user small { display:block; }
.admin-user b { font-size:12px; }.admin-user small { margin-top:2px; color:var(--muted); font-size:9px; }
.sidebar-toggle { display:none; border:0; background:transparent; font-size:22px; }
.admin-content { padding:34px 36px 55px; }

.welcome { position:relative; padding:34px 38px; color:white; background:linear-gradient(100deg,var(--forest),#174f86); overflow:hidden; }
.welcome::after { content:""; position:absolute; width:260px; height:260px; right:-70px; top:-130px; border:55px solid rgba(255,178,62,.11); border-radius:50%; }
.welcome span { color:var(--lime); font-size:10px; letter-spacing:.17em; }
.welcome h2 { margin:8px 0 4px; font-size:27px; }.welcome p { margin:0; color:rgba(255,255,255,.62); font-size:13px; }
.stat-grid { margin-top:20px; display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.stat-card { padding:24px; background:white; border:1px solid var(--line); }
.stat-card span { color:var(--muted); font-size:11px; }.stat-card b { display:block; margin-top:10px; font-size:28px; }.stat-card i { color:var(--green); font-style:normal; font-size:10px; }
.dashboard-grid { margin-top:20px; display:grid; grid-template-columns:1.35fr .65fr; gap:20px; }
.panel { background:white; border:1px solid var(--line); }
.panel-head { min-height:64px; padding:0 22px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line); }
.panel-head h2 { margin:0; font-size:16px; }.panel-head span { color:var(--muted); font-size:11px; }
.panel-body { padding:22px; }
.quick-list { display:grid; gap:10px; }
.quick-list button { padding:14px; display:flex; justify-content:space-between; border:1px solid var(--line); background:white; cursor:pointer; text-align:left; }
.quick-list button:hover { border-color:var(--green); }.quick-list button span { color:var(--green); }
.activity-empty { padding:40px 20px; text-align:center; color:var(--muted); font-size:12px; }

.toolbar { margin-bottom:18px; display:flex; justify-content:space-between; align-items:center; gap:16px; }
.toolbar p { margin:0; color:var(--muted); font-size:13px; }
.button { padding:10px 16px; border:1px solid var(--line); background:white; cursor:pointer; font-size:12px; font-weight:700; }
.button.primary { color:white; border-color:var(--forest); background:var(--forest); }.button.primary:hover { background:#174f86; }.button.secondary:hover { border-color:var(--green); }
.content-table { width:100%; border-collapse:collapse; background:white; border:1px solid var(--line); }
.content-table th { padding:13px 16px; color:var(--muted); background:#f8faf7; border-bottom:1px solid var(--line); font-size:10px; letter-spacing:.08em; text-align:left; }
.content-table td { padding:14px 16px; border-bottom:1px solid var(--line); font-size:12px; vertical-align:middle; }
.content-table tr:last-child td { border-bottom:0; }
.content-table .title-cell { display:flex; align-items:center; gap:12px; }
.content-table .thumb { width:56px; height:42px; flex:0 0 auto; object-fit:cover; background:#eaf0ec; }
.content-table .title-cell b { display:block; max-width:340px; }.content-table .title-cell small { display:block; margin-top:3px; max-width:420px; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.row-actions { display:flex; gap:6px; justify-content:flex-end; }.row-actions button { padding:6px 10px; border:1px solid var(--line); background:white; font-size:11px; cursor:pointer; }.row-actions .delete { color:var(--danger); }.row-actions button:hover { border-color:currentColor; }
.tag { display:inline-block; padding:4px 8px; color:var(--green); background:#e9f7ef; font-size:10px; }
.tag.new { color:#9b6a00; background:#fff5d6; }.tag.contacted { color:#126b9c; background:#e5f4fc; }.tag.closed { color:#69726f; background:#edf0ef; }
.empty { padding:70px 20px; text-align:center; color:var(--muted); background:white; border:1px dashed var(--line); }

.category-manager { margin-bottom:18px; padding:20px; background:white; border:1px solid var(--line); }
.category-manager-head { display:flex; align-items:flex-end; justify-content:space-between; gap:18px; }
.category-manager-head b { font-size:15px; }
.category-manager-head p { margin:5px 0 0; color:var(--muted); font-size:11px; }
.category-manager-head form { display:flex; gap:8px; }
.category-manager-head input { min-width:220px; padding:10px 12px; border:1px solid var(--line); outline:0; }
.category-manager-head input:focus { border-color:var(--green); }
.category-list { margin-top:16px; display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:10px; }
.category-item { min-width:0; padding:11px 12px; display:flex; align-items:center; justify-content:space-between; gap:10px; background:var(--paper); border:1px solid var(--line); }
.category-item > div:first-child { min-width:0; }
.category-item b,.category-item small { display:block; }
.category-item b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; }
.category-item small { margin-top:3px; color:var(--muted); font-size:9px; }

.company-form { display:grid; grid-template-columns:1fr 1fr; gap:18px; padding:25px; background:white; border:1px solid var(--line); }
.field { display:grid; gap:7px; }.field.full { grid-column:1/-1; }.field span { color:#425b56; font-size:11px; font-weight:700; }.field small { color:var(--muted); font-size:9px; }
.field input,.field select,.field textarea { width:100%; padding:11px 12px; border:1px solid var(--line); background:white; outline:0; font-size:13px; }.field input:focus,.field select:focus,.field textarea:focus { border-color:var(--green); }.field textarea { min-height:90px; resize:vertical; }
.company-actions { grid-column:1/-1; padding-top:12px; display:flex; justify-content:flex-end; }

.editor-modal { width:min(720px,calc(100vw - 28px)); max-height:calc(100vh - 30px); padding:0; border:0; box-shadow:0 30px 100px rgba(5,40,36,.32); }
.editor-modal::backdrop { background:rgba(4,31,29,.68); backdrop-filter:blur(5px); }
.editor-modal form > header { position:sticky; top:0; z-index:2; min-height:80px; padding:18px 24px; display:flex; justify-content:space-between; align-items:center; color:white; background:var(--forest); }
.editor-modal header span { color:var(--lime); font-size:9px; letter-spacing:.18em; }.editor-modal header h2 { margin:4px 0 0; font-size:20px; }.editor-modal header button { width:36px;height:36px;border:0;background:rgba(255,255,255,.1);color:white;font-size:22px;cursor:pointer; }
.editor-fields { padding:24px; display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.editor-modal footer { position:sticky; bottom:0; padding:16px 24px; display:flex; justify-content:flex-end; gap:8px; background:white; border-top:1px solid var(--line); }
.upload-row { display:flex; gap:8px; }.upload-row input { flex:1; }.upload-trigger { flex:0 0 auto; padding:0 12px; border:1px solid var(--line); background:#f6f8f5; cursor:pointer; }
.single-upload-preview { width:min(100%,320px); max-height:190px; margin-top:3px; object-fit:contain; object-position:left center; background:#f7f9f6; border:1px solid var(--line); }
.single-upload-preview.is-empty { display:none; }
.gallery-admin-field { padding:16px; background:#f8faf7; border:1px solid var(--line); }
.gallery-admin-toolbar { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.gallery-admin-list { display:grid; gap:10px; margin-top:12px; }
.gallery-admin-item { padding:9px; display:grid; grid-template-columns:108px minmax(0,1fr); align-items:center; gap:12px; background:white; border:1px solid var(--line); cursor:grab; }
.gallery-admin-item.dragging { opacity:.48; }
.gallery-admin-item img { width:108px; height:72px; object-fit:cover; background:#edf2ef; }
.gallery-admin-item code,.asset-info code { display:block; max-width:100%; color:var(--muted); font-size:10px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gallery-admin-actions { margin-top:9px; display:flex; gap:6px; }
.gallery-admin-actions button,.asset-actions button { padding:6px 10px; border:1px solid var(--line); background:white; font-size:11px; cursor:pointer; }
.gallery-admin-actions .delete,.asset-actions .delete { color:var(--danger); }
.gallery-admin-empty { margin-top:12px; padding:22px; color:var(--muted); text-align:center; background:white; border:1px dashed var(--line); font-size:11px; }
.asset-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:16px; }
.asset-card { min-width:0; padding:12px; display:grid; gap:11px; background:white; border:1px solid var(--line); }
.asset-preview { height:150px; display:grid; place-items:center; overflow:hidden; color:var(--danger); background:#edf2ef; font-weight:800; letter-spacing:.12em; }
.asset-preview img { width:100%; height:100%; object-fit:contain; }
.asset-info { min-width:0; display:grid; gap:5px; }
.asset-info b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; }
.asset-info small { color:var(--muted); font-size:10px; }
.asset-actions { display:flex; align-items:center; gap:6px; }
.asset-actions .tag { margin-right:auto; }
.asset-actions .tag.referenced { color:#126b9c; background:#e5f4fc; }
.asset-actions button:disabled { color:#98a39f; cursor:not-allowed; opacity:.65; }
.toast { position:fixed; z-index:100; right:28px; bottom:28px; max-width:360px; padding:13px 18px; color:white; background:var(--forest); box-shadow:var(--shadow); transform:translateY(100px); opacity:0; transition:.25s; font-size:12px; }.toast.show { transform:none; opacity:1; }.toast.error { background:var(--danger); }

@media(max-width:980px){.stat-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.content-table{min-width:760px}.table-wrap{overflow:auto}.login-view{grid-template-columns:1fr;padding:100px 24px 40px}.login-card{grid-column:1;width:min(100%,520px);justify-self:center}.login-decoration{display:none}}
@media(max-width:760px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:none}.admin-main{margin-left:0}.sidebar-toggle{display:block;margin-right:14px}.admin-header{padding:0 18px}.admin-user div{display:none}.admin-content{padding:22px 14px 45px}.stat-grid{grid-template-columns:1fr 1fr;gap:10px}.stat-card{padding:18px}.toolbar{align-items:flex-start;flex-direction:column}.category-manager-head{align-items:stretch;flex-direction:column}.category-manager-head form{align-items:stretch;flex-direction:column}.category-manager-head input{min-width:0}.category-list{grid-template-columns:1fr}.company-form,.editor-fields{grid-template-columns:1fr}.field.full{grid-column:auto}.gallery-admin-item{grid-template-columns:82px minmax(0,1fr)}.gallery-admin-item img{width:82px;height:62px}.asset-grid{grid-template-columns:1fr}.login-card{padding:35px 24px}.login-brand{top:28px;left:24px}}
