:root{--h_footer:56px;--h_header:60px;--grad-a:#1e3c72;--grad-b:#2a5298}*{box-sizing:border-box;margin:0;padding:0}html,body{background:linear-gradient(#f5f7fa 0%,#e8ecf3 100%);width:100%;height:100%;font-family:PingFang SC,Microsoft YaHei,Segoe UI,Arial,sans-serif}#root{min-height:100%}.site-container{width:100%;min-height:100vh;padding-top:var(--h_header);padding-bottom:var(--h_footer);box-sizing:border-box;background:linear-gradient(#f5f7fa 0%,#e8ecf3 100%);flex-direction:column;display:flex;position:relative}.site-header{width:100%;height:var(--h_header);background:linear-gradient(135deg, var(--grad-a), var(--grad-b));z-index:10;position:fixed;top:0;left:0;box-shadow:0 2px 10px #1e3c7259}.nav-top{height:var(--h_header);direction:ltr;align-items:center;max-width:960px;margin:0 auto;padding:0 16px;display:flex;position:relative}.nav-item a,.nav-item-now a{color:#eaf1ff;border-radius:20px;padding:8px 14px;font-size:15px;text-decoration:none;transition:background .25s,color .25s;display:inline-block}.nav-item a:hover{color:#fff;background:#ffffff2e}.nav-item-now a{color:#fff;background:#ffffff38;font-weight:bolder}.site-main{background:0 0;flex:1;width:100%}.center-flex{justify-content:center;align-items:center;display:flex}.slogan{background:linear-gradient(90deg, var(--grad-a), #4e9af1);color:#0000;letter-spacing:2px;text-align:center;-webkit-background-clip:text;background-clip:text;padding:8px 24px;font-size:xx-large;font-weight:700;animation:.8s both fadeUp}.sub-slogan{color:#34495e;text-align:center;padding:8px 24px;font-size:xx-large;animation:.8s both fadeUp}.home-logo{filter:drop-shadow(0 8px 24px #1e3c7240);max-width:90%;height:auto;animation:.8s both fadeUp}.hero-image{border-radius:16px;width:100%;max-width:1000px;height:auto;animation:.8s both fadeUp;box-shadow:0 12px 40px #1e3c7238}@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.page-title{text-align:center;color:var(--grad-a);letter-spacing:4px;margin:28px 0 10px;font-size:30px;font-weight:700}.page-content{max-width:780px;margin:0 auto;padding:0 24px 24px}.content-narrow{max-width:780px;margin:0 auto}.page-paragraph{color:#34495e;margin:10px 0;font-size:16px;line-height:1.9}.page-placeholder{text-align:center;color:#34495e;padding:32px 0;font-size:xx-large}.site-footer{width:100%;height:var(--h_footer);text-align:center;background:linear-gradient(135deg, var(--grad-a), var(--grad-b));color:#cfd8ea;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;display:flex}.site-footer p{margin:3px 0;line-height:1.5}.site-footer a{color:#9ec5ff;text-decoration:none}.site-footer img{vertical-align:middle}.page-tip{text-align:center;color:#6b7280;padding:60px 20px;font-size:16px}.wasm-page{height:calc(100vh - var(--h_header) - var(--h_footer));flex-direction:column;justify-content:center;align-items:center;gap:18px;min-height:400px;display:flex}.wasm-canvas-wrap{background:#000;flex:1;width:100%;max-width:1280px;min-height:300px;display:none;position:relative;overflow:hidden}.wasm-canvas-wrap.show{display:block}.wasm-canvas-wrap canvas{cursor:none;width:100%;height:100%;margin:auto;display:block}.wasm-controls{background:#fff;border:1px solid #00000014;border-radius:10px;flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;padding:10px;display:flex}.wasm-controls select,.wasm-controls input{font-size:14px}.admin-wrap{background:#f0f2f5;min-height:100vh;font-family:PingFang SC,Microsoft YaHei,Segoe UI,Arial,sans-serif}.admin-header{background:linear-gradient(135deg, var(--grad-a), var(--grad-b));color:#fff;justify-content:space-between;align-items:center;height:56px;padding:0 24px;display:flex}.admin-header h1{font-size:17px;font-weight:600}.admin-header a{color:#eaf1ff;margin-left:16px;font-size:14px;text-decoration:none}.admin-body{max-width:1100px;margin:24px auto;padding:0 16px}.admin-card{background:#fff;border-radius:12px;margin-bottom:16px;padding:20px;box-shadow:0 1px 3px #00000014}.admin-card h2{color:#1a1b1c;margin-bottom:14px;font-size:16px}.admin-login-box{background:#fff;border-radius:14px;max-width:380px;margin:12vh auto;padding:32px 28px;box-shadow:0 4px 20px #0000001f}.admin-login-box h2{text-align:center;color:var(--grad-a);margin-bottom:22px}.admin-login-box label{color:#44546a;margin:12px 0 6px;font-size:14px;display:block}.admin-login-box input{box-sizing:border-box;border:1px solid #d9d9d9;border-radius:8px;width:100%;padding:9px 12px;font-size:14px}.btn{cursor:pointer;border:none;border-radius:8px;padding:9px 20px;font-size:14px;text-decoration:none;display:inline-block}.btn-primary{background:linear-gradient(135deg, var(--grad-a), var(--grad-b));color:#fff;width:100%;margin-top:18px}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-plain{color:#44546a;background:#fff;border:1px solid #d9d9d9}.btn-danger{color:#cf1322;background:#fff;border:1px solid #ffa39e}.page-list-item{border-bottom:1px solid #f0f0f0;flex-wrap:wrap;align-items:center;gap:14px;padding:14px 0;display:flex}.page-list-item:last-child{border-bottom:none}.page-list-item .slug{color:var(--grad-a);text-align:center;background:#f0f4ff;border-radius:6px;min-width:150px;padding:3px 10px;font-family:Consolas,monospace;font-size:13px}.page-list-item .title{flex:1;min-width:100px;font-size:15px;font-weight:600}.page-list-item .meta{color:#8c8c8c;font-size:12px}.editor-block-row{flex-wrap:wrap;gap:8px;margin-bottom:10px;display:flex}.editor-block-row select,.editor-block-row input,.editor-block-row textarea{border:1px solid #d9d9d9;border-radius:8px;padding:8px 10px;font-size:14px}.editor-block-row .type{width:130px}.editor-block-row .text{flex:2;min-width:220px}.editor-block-row .value{flex:1;min-width:120px}.editor-actions{gap:10px;margin-top:16px;display:flex}.msg-error{color:#cf1322;margin-top:10px;font-size:14px}.msg-ok{color:#52c41a;margin-top:10px;font-size:14px}.notfound{text-align:center;padding:80px 20px}.notfound h2{color:var(--grad-a);font-size:40px}.notfound a{color:#2a5298}.admin-shell{background:#f5f6fa;flex-direction:column;min-height:100vh;display:flex}.admin-topbar{z-index:100;background:#fff;border-bottom:1px solid #e8e8e8;justify-content:space-between;align-items:center;height:56px;padding:0 24px;display:flex;position:sticky;top:0}.admin-topbar-left{align-items:center;gap:10px;display:flex}.admin-topbar-logo{width:32px;height:32px}.admin-topbar-title{color:#1f2937;letter-spacing:1px;font-size:17px;font-weight:700}.admin-topbar-right{align-items:center;gap:16px;display:flex}.admin-topbar-link{color:#2a5298;font-size:14px;text-decoration:none}.admin-topbar-user{color:#6b7280;font-size:14px}.admin-main{flex:1;min-height:0;display:flex}.admin-sidebar{background:#fff;border-right:1px solid #e8e8e8;flex-shrink:0;width:200px;padding:12px 0}.admin-nav-item{color:#4b5563;align-items:center;gap:10px;padding:11px 20px;font-size:14px;text-decoration:none;transition:all .15s;display:flex}.admin-nav-item:hover{color:#2a5298;background:#f0f4ff}.admin-nav-item.active{color:#1e3c72;background:#e8efff;border-right:3px solid #2a5298;font-weight:600}.admin-nav-icon{font-size:16px}.admin-content{flex:1;min-width:0;padding:20px 24px}.admin-section-bar{color:#fff;border-radius:8px;justify-content:space-between;align-items:center;margin-bottom:16px;padding:12px 18px;display:flex}.admin-section-bar h2{margin:0;font-size:16px;font-weight:600}.admin-section-sub{opacity:.9;font-size:13px}.bar-purple{background:linear-gradient(90deg,#6c5ce7,#a29bfe)}.bar-teal{background:linear-gradient(90deg,#00b894,#55efc4)}.bar-orange{background:linear-gradient(90deg,#e17055,#fab1a0)}.admin-input{box-sizing:border-box;border:1px solid #d9d9d9;border-radius:8px;width:100%;margin-top:6px;padding:9px 12px;font-size:14px}.admin-form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));align-items:end;gap:16px;display:grid}.admin-form-vertical{flex-direction:column;gap:14px;display:flex}.admin-form-vertical label,.admin-form-grid label{color:#44546a;font-size:14px;font-weight:500}.admin-table{border-collapse:collapse;width:100%;font-size:14px}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid #f0f0f0;padding:10px 12px}.admin-table th{color:#6b7280;background:#fafafa;font-size:13px;font-weight:600}.role-badge{border-radius:10px;padding:2px 10px;font-size:12px;font-weight:600;display:inline-block}.role-admin{color:#cf1322;background:#fff1f0}.role-user{color:#096dd9;background:#e6f7ff}.admin-loading{text-align:center;color:#999;padding:40px}.btn-sm{padding:5px 14px;font-size:13px}.status-metric{margin:4px 0 12px}.status-metric-head{justify-content:space-between;align-items:baseline;margin-bottom:6px;display:flex}.status-metric-label{font-size:14px;font-weight:600}.status-metric-value{color:#333;font-size:18px;font-weight:700}.status-bar{background:#ececf1;border-radius:5px;height:10px;overflow:hidden}.status-bar-fill{border-radius:5px;height:100%;transition:width .6s}.status-metric-detail{color:#888;margin-top:6px;font-size:12px}
