:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#172b4d;background:#f5f7fb;font-synthesis:none;--text:#172b4d;--muted:#5e7190;--blue:#315eee;--border:#dce5f2;--soft:#f0f5ff;--green:#168763}
*{box-sizing:border-box}
html{min-width:320px}body{margin:0;min-height:100vh}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:inherit}::selection{background:#cad8ff;color:#152a54}:focus-visible{outline:3px solid #6a8dff;outline-offset:2px}
.admin-shell{--sidebar-width:232px;min-height:100vh}
.skip-link{position:fixed;top:-60px;left:16px;z-index:60;background:#fff;border:1px solid var(--border);border-radius:8px;padding:9px 13px;text-decoration:none}.skip-link:focus{top:12px}
.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-width);padding:22px 12px 16px;background:#fff;border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:30;overflow-y:auto}
.sidebar-brand{margin:0 8px 18px;padding:0 4px 20px;border-bottom:1px solid #e8edf5}
.workspace{margin-left:var(--sidebar-width);min-width:0;min-height:100vh}
.mast{position:sticky;top:0;height:64px;border-bottom:1px solid var(--border);background:#f5f7fb;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 32px;z-index:20}
.main-content{max-width:1430px;margin:0 auto;padding:0 32px 80px;min-width:0}
.brand{display:flex;gap:11px;align-items:center;white-space:nowrap;min-width:165px}
.brand-mark{height:38px;width:38px;border-radius:11px;background:#102747;color:#6ce0df;display:grid;place-items:center}
.brand strong{display:block;font-size:17px;letter-spacing:-.025em;line-height:1.1}.brand small{display:block;color:var(--muted);font-size:10px;margin-top:4px}
.nav{flex:1;display:block;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#cbd7e8 transparent}
.nav-group + .nav-group{margin-top:18px}.nav-heading{padding:7px 13px 8px;color:#8190a8;font-size:10px;font-weight:750;letter-spacing:.08em}
.nav button{width:100%;min-height:42px;display:flex;align-items:center;gap:11px;border:0;border-radius:8px;background:transparent;color:#465c7b;padding:0 13px;font-size:13px;font-weight:610;text-align:left;white-space:nowrap}
.nav button:hover{background:#f0f4fa;color:#203f71}.nav button.active{color:#2859db;background:#eaf0ff;font-weight:740}
.nav svg,.tool svg,.inline-action svg{width:15px;height:15px;stroke-width:1.8}
.nav button svg{width:17px;height:17px;flex:none}
.sidebar-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid #e8edf5;padding:17px 7px 0}.sidebar-version{color:#96a3b8;font-size:10px;white-space:nowrap}
.mast-left,.mast-right{display:flex;align-items:center;gap:10px;min-width:0;white-space:nowrap}.mast-left{font-size:12px;color:#72829b}.mast-left strong{font-size:13px;color:#20395e}.workspace-separator{color:#a8b5c8}
.mast-right{gap:9px}.tool.menu-toggle{display:none}
.session-pill{border:1px solid #dce6f5;background:#fff;border-radius:11px;padding:7px 10px;color:#4e6282;font-size:11px;line-height:1.3}.session-pill:before{content:"";display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:#26b985}
.tool{width:38px;height:38px;border:1px solid #e1e8f4;background:white;color:#506586;border-radius:9px;display:grid;place-items:center}.tool:hover{border-color:#bdcff2;background:#f8fbff}
.sidebar-scrim{display:none}
.page-head{display:flex;justify-content:space-between;gap:20px;align-items:end;margin:30px 0 22px}.page-head h1{font-size:28px;line-height:1.2;letter-spacing:-.03em;margin:0;font-weight:760}.page-head h1:focus{outline:none}.page-head p{margin:7px 0 0;color:var(--muted);font-size:13px;line-height:1.5}.head-actions{display:flex;align-items:center;gap:8px}
.dashboard-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:#fff;border:1px solid var(--border);border-radius:13px;overflow:hidden}
.dashboard-stat{padding:18px 20px;border-right:1px solid #e7edf5;display:grid;gap:6px}.dashboard-stat:last-child{border-right:0}.dashboard-stat span{font-size:12px;color:#5f7190}.dashboard-stat strong{font-size:24px;line-height:1.1;font-weight:760;font-variant-numeric:tabular-nums}.dashboard-stat small{font-size:11px;color:#7486a1}
.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(270px,1fr);gap:18px;margin-top:18px;align-items:start}.dashboard-grid .panel + .panel{margin-top:0}
.status-inline{font-size:12px;color:#54728a;display:flex;align-items:center;gap:6px}.status-inline:before{content:"";width:7px;height:7px;border-radius:50%;background:#19a772}
.btn{border:1px solid #dbe5f3;background:#fff;color:#31527a;min-height:37px;padding:7px 13px;border-radius:8px;font-size:12px;font-weight:680;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;white-space:nowrap}
.btn:hover{background:#f4f8ff;border-color:#bdd2f5}.btn.primary{border-color:#315eee;background:#315eee;color:#fff;box-shadow:0 6px 12px rgba(0,0,0,.12)}.btn.primary:hover{background:#204dcc}.btn.danger{color:#b3424c;border-color:#efd1d5;background:#fff}.btn.danger:hover{background:#fff4f5}.btn.small{min-height:31px;padding:5px 9px;font-size:11px}.btn:disabled{opacity:.5;cursor:not-allowed}
.grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:18px}.panel{background:#fff;border:1px solid var(--border);border-radius:13px;min-width:0}.panel-pad{padding:22px}.panel-head{display:flex;justify-content:space-between;align-items:start;gap:14px;margin-bottom:16px}.panel-head h2,.panel h2{font-size:19px;margin:0;letter-spacing:-.02em}.panel-head p,.subtext{color:var(--muted);font-size:12px;line-height:1.55;margin:6px 0 0}
.panel + .panel{margin-top:18px}.grid .panel + .panel{margin-top:0}
.metric-band{background:#f0f5ff;border:1px solid #dbe6f9;border-radius:10px;display:grid;grid-template-columns:repeat(3,1fr);margin:16px 0 0;overflow:hidden}.metric{padding:16px;border-right:1px solid #dce6f8}.metric:last-child{border:0}.metric b{display:block;font-size:21px;line-height:1.1;font-variant-numeric:tabular-nums}.metric span{display:block;color:#647897;font-size:11px;margin-top:7px}
.quick-list{display:grid;gap:9px}.quick{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;text-align:left;padding:12px;border-radius:9px;border:1px solid var(--border);background:#fff;color:var(--text)}.quick:hover{background:#f8fbff;border-color:#bad0f5}.quick strong{font-size:12px}.quick span{display:block;font-size:11px;color:var(--muted);margin-top:4px}
.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;font-size:12px}.table th{text-align:left;color:#667b99;font-weight:700;padding:11px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:13px 12px;border-bottom:1px solid #edf1f7;vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tr:hover td{background:#fafcff}.table .title-cell{font-weight:700;color:#23395c;max-width:270px}.table .subline{display:block;color:#7486a1;font-weight:400;font-size:11px;margin-top:4px;word-break:break-all}.table .actions{display:flex;gap:6px;justify-content:flex-end;white-space:nowrap}.table .right{text-align:right}.table .empty-row{text-align:center;padding:36px;color:var(--muted)}
.badge{display:inline-flex;align-items:center;border-radius:6px;padding:5px 8px;font-size:11px;font-weight:700;background:#eef2f8;color:#5b6f8d;white-space:nowrap}.badge.published{background:#e7f6f0;color:#157153}.badge.draft{background:#edf2ff;color:#365cc9}.badge.archived{background:#f5eef0;color:#925360}.badge.important{background:#fff2e7;color:#ae6430}
.filters{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:0 0 16px}.filters input,.filters select{width:auto;min-width:160px}.field{display:flex;flex-direction:column;gap:7px}.field label{font-weight:680;font-size:12px;color:#365075}.field input,.field textarea,.field select,.filters input,.filters select{width:100%;min-height:38px;border:1px solid #dce4f0;background:#fbfcff;border-radius:8px;padding:8px 10px;color:#1f3658;font-size:12px;outline:none}.field textarea{min-height:100px;resize:vertical;line-height:1.55}.field input:focus,.field textarea:focus,.field select:focus,.filters input:focus,.filters select:focus{border-color:#6485ed;box-shadow:0 0 0 3px rgba(72,110,235,.12)}.field small{font-size:11px;color:#71829c;line-height:1.4}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid .wide{grid-column:1/-1}.form-actions{display:flex;gap:8px;flex-wrap:wrap;border-top:1px solid #ebf0f7;padding-top:18px;margin-top:20px}
.section-label{font-size:13px;font-weight:750;margin:22px 0 12px;color:#263c5e}.blocks{display:grid;gap:10px}.block{border:1px solid #e0e8f3;border-radius:9px;background:#fbfcff;padding:12px;display:grid;grid-template-columns:146px minmax(0,1fr) auto;gap:9px;align-items:start}.block select,.block input,.block textarea{width:100%;min-width:0;min-height:36px;border:1px solid #dce4f0;border-radius:7px;background:white;padding:7px 9px;font-size:12px}.block textarea{min-height:65px;resize:vertical}.block .extras{grid-column:2;display:flex;gap:8px}.block .extras>*{flex:1}.block .remove{align-self:start}.block-tip{color:var(--muted);font-size:11px;margin:8px 0 0}
.notice-box{background:#f0f5ff;border:1px solid #dce6fa;padding:13px 15px;border-radius:9px;color:#35527b;font-size:12px;line-height:1.55}.notice-box.good{background:#ebf8f2;border-color:#cfeee0;color:#126b50}.notice-box.warn{background:#fff7ed;border-color:#f2dec0;color:#88562c}.notice-box.error{background:#fff1f2;border-color:#f0ccd2;color:#9b3843}
.activity{list-style:none;margin:0;padding:0}.activity li{padding:13px 0;border-bottom:1px solid #edf1f7;display:flex;justify-content:space-between;gap:10px;font-size:12px}.activity li:last-child{border-bottom:0}.activity time{color:#7c8da5;font-size:11px;white-space:nowrap}.muted{color:var(--muted)}.empty{padding:34px 20px;text-align:center;color:var(--muted);font-size:12px;border:1px dashed #d7e2f1;border-radius:9px;background:#fafcff}.empty strong{display:block;font-size:14px;color:#334d70;margin-bottom:6px}
.preview{width:min(390px,100%);margin:14px auto 4px;border:1px solid #d8e3f1;border-radius:21px;background:#fff;min-height:390px;padding:28px 23px;box-shadow:0 10px 24px rgba(25,48,82,.07)}.preview h2{font-size:26px;line-height:1.35}.preview p{line-height:1.7;font-size:14px;color:#334760}.preview .meta{color:#7889a0;font-size:12px;margin:10px 0 22px}.preview pre{white-space:pre-wrap;background:#eff3f8;padding:12px;border-radius:8px;font-size:12px}.preview blockquote{border-left:1px solid #83a69c;margin:14px 0;padding-left:13px;color:#49625e}
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.media-card{border:1px solid var(--border);border-radius:9px;overflow:hidden;background:white}.media-card img{width:100%;height:118px;object-fit:cover;background:#edf3f9}.media-card div{padding:10px}.media-card strong{display:block;font-size:11px;word-break:break-all}.media-card small{display:block;color:var(--muted);font-size:11px;margin:5px 0}
.layout-row{display:grid;grid-template-columns:minmax(0,1fr) 105px 140px 140px auto;gap:9px;align-items:center;border-bottom:1px solid #e9eef6;padding:10px 0;font-size:12px}.layout-row:first-child{color:var(--muted);font-weight:700}.layout-row select,.layout-row input{width:100%;height:36px;border:1px solid #dce4f0;border-radius:7px;padding:6px 8px;background:#fff;font-size:12px}
.layout-actions{display:flex;align-items:center;gap:8px;white-space:nowrap}.layout-actions label{display:flex;align-items:center;gap:4px}.layout-row .layout-actions input[type=checkbox]{width:16px;height:16px;padding:0}
.module-row{display:grid;grid-template-columns:70px minmax(170px,1fr) 105px 105px minmax(160px,1fr);gap:12px;align-items:end;padding:12px 0;border-bottom:1px solid var(--border)}.module-row>label{align-self:center;white-space:nowrap}.module-row .field{display:grid;gap:4px}.module-row .field label,.module-row small{font-size:11px;color:var(--muted)}.module-row input[type=text],.module-row input[type=number],.module-row .field input{width:100%;height:36px;border:1px solid #dce4f0;border-radius:7px;padding:6px 8px;background:#fff}.module-row small{align-self:center;line-height:1.5}
.module-group{font-size:13px;color:var(--text);margin:24px 0 2px;padding:0 0 8px;border-bottom:1px solid var(--border)}.module-group:first-child{margin-top:8px}
@media(max-width:760px){.module-row{grid-template-columns:70px minmax(0,1fr) 72px 72px}.module-row small{grid-column:2/-1}}
.toast{position:fixed;right:24px;bottom:22px;max-width:380px;padding:13px 16px;background:#172f55;color:white;border-radius:10px;box-shadow:0 12px 26px rgba(22,45,83,.18);font-size:12px;z-index:50;opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .2s,transform .2s}.toast.show{opacity:1;transform:translateY(0)}.toast.error{background:#9e3847}
.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}.login{width:min(420px,100%);padding:34px;background:#fff;border:1px solid var(--border);border-radius:15px;box-shadow:0 18px 45px rgba(28,52,96,.08)}.login .brand{margin-bottom:28px}.login h1{font-size:25px;letter-spacing:-.03em;margin:0 0 8px}.login p{font-size:12px;line-height:1.55;color:var(--muted);margin:0 0 22px}.login form{display:grid;gap:15px}.login .btn{min-height:42px}
@media(max-width:1180px){.grid,.dashboard-grid{grid-template-columns:1fr}.layout-row{grid-template-columns:minmax(0,1fr) 75px 115px 115px auto}}
@media(max-width:900px){.admin-shell{--sidebar-width:0px}.sidebar{width:min(270px,85vw);transform:translateX(-100%);visibility:hidden;box-shadow:8px 0 30px rgba(19,44,82,.12);transition:transform .2s ease,visibility .2s ease}.admin-shell.sidebar-open .sidebar{transform:translateX(0);visibility:visible}.sidebar-scrim{display:block;position:fixed;inset:0;background:rgba(14,31,57,.38);opacity:0;pointer-events:none;z-index:25;transition:opacity .2s ease}.admin-shell.sidebar-open .sidebar-scrim{opacity:1;pointer-events:auto}.workspace{margin-left:0}.tool.menu-toggle{display:grid}}
@media(max-width:760px){.main-content{padding:0 15px 50px}.mast{height:62px;padding:0 15px}.page-head{margin:26px 0 18px;align-items:start}.page-head h1{font-size:25px}.page-head p{max-width:42ch}.grid{grid-template-columns:1fr}.grid .panel + .panel{margin-top:0}.panel-pad{padding:17px}.form-grid{grid-template-columns:1fr}.dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-stat:nth-child(2){border-right:0}.dashboard-stat:nth-child(-n+2){border-bottom:1px solid #e7edf5}.layout-row{grid-template-columns:minmax(0,1fr) 62px auto}.layout-row .date-col{display:none}.layout-row:first-child{display:none}.block{grid-template-columns:1fr auto}.block .body-col{grid-column:1/-1;grid-row:2}.block .extras{grid-column:1/-1;grid-row:3}.block .remove{grid-column:2;grid-row:1}.table .hide-mobile{display:none}}
@media(max-width:480px){.workspace-label,.workspace-separator{display:none}.page-head{display:block}.head-actions{margin-top:14px}.dashboard-stat{padding:15px}.dashboard-stat strong{font-size:22px}.metric{padding:13px 9px}.metric b{font-size:18px}.metric span{font-size:10px}.table th,.table td{padding:10px 7px}.table .actions{flex-wrap:wrap}.btn.small{min-height:33px}.layout-row{grid-template-columns:minmax(0,1fr) 55px auto}}
@media(prefers-reduced-motion:reduce){.toast,.sidebar,.sidebar-scrim{transition:none}}
.gallery-choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;padding:10px;border:1px solid #dce4f0;border-radius:8px;background:#fbfcff;color:#506586;font-size:12px}.gallery-choices label,.field label:has(#project-pinned){display:flex;align-items:center;gap:8px;font-weight:500}.gallery-choices input[type=checkbox],.field #project-pinned{width:16px;min-height:16px;height:16px;padding:0;margin:0;flex:none}
.auth-provider-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.auth-provider-card{display:flex;flex-direction:column;gap:15px;padding:18px;border:1px solid var(--border);border-radius:10px;background:#fbfcff;min-width:0}.auth-provider-head{display:flex;justify-content:space-between;gap:8px;align-items:start}.auth-provider-head h3{margin:0;font-size:16px}.auth-provider-head p{margin:5px 0 0;color:var(--muted);font-size:11px;line-height:1.5}.auth-check{display:flex;align-items:center;gap:8px;color:#365075;font-size:12px;font-weight:650}.auth-check input{width:16px;height:16px;margin:0}.auth-provider-card .field input{background:#fff}@media(max-width:1180px){.auth-provider-grid{grid-template-columns:1fr}}
.media-card video{width:100%;height:118px;object-fit:contain;background:#14202d}.recipe-rows{display:grid;gap:10px}.recipe-item{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:8px;align-items:end;padding:12px;border:1px solid #e0e8f3;border-radius:9px;background:#fbfcff}.recipe-item.step{grid-template-columns:minmax(0,2fr) minmax(0,1fr) 105px auto}.recipe-item label{display:grid;gap:5px;font-size:11px;color:#506586}.recipe-item input,.recipe-item textarea,.recipe-item select{width:100%;min-height:37px;border:1px solid #dce4f0;border-radius:7px;padding:7px;background:white;color:#1f3658}.recipe-item textarea{min-height:75px;resize:vertical}@media(max-width:760px){.recipe-item,.recipe-item.step{grid-template-columns:1fr 1fr}.recipe-item.step label:first-child{grid-column:1/-1}}
