@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@500;600;700;800&display=swap');
/* Spun Apps panel v2: top bar with organised menus, one content column, calmer typography. Component class names are shared with every page. */
:root{--bg:#f3f5f0;--surface:#fff;--surface-2:#f7f9f4;--line:#e2e7dc;--line-2:#eceee6;--ink:#17312a;--text:#2b4538;--muted:#6f8071;--faint:#98a596;--accent:#1f5a44;--accent-2:#2c7a5c;--accent-ink:#fbfdf5;--soft:#e8f1e4;--soft-2:#d9e8d3;--gold:#d8b45a;--danger:#a9432c;--danger-bg:#fff1ec;--radius:14px;--shadow:0 1px 2px #1a2c2008,0 8px 24px #1a2c2008;font-family:'DM Sans',system-ui,sans-serif;color:var(--text);background:var(--bg);font-synthesis:none;font-size:14px;line-height:1.5}
*{box-sizing:border-box}body{margin:0;min-height:100vh;display:flex;flex-direction:column}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #b8d6ac;outline-offset:2px}
h1,h2,h3{color:var(--ink)}
/* Top bar */
.topbar{position:sticky;top:0;z-index:40;background:#ffffffee;backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.topbar-inner{max-width:1240px;margin:0 auto;padding:0 28px;height:64px;display:flex;align-items:center;gap:22px}
.logo{display:flex;align-items:center;font:800 22px Manrope,sans-serif;letter-spacing:-1px;color:var(--ink);flex:none}.logo-mark{font:800 20px Manrope,sans-serif;display:grid;place-items:center;width:30px;height:30px;background:var(--accent);border-radius:9px;color:#dbeacd;margin-right:9px}.logo-light{font-weight:500;color:var(--faint)}
.main-nav{display:flex;align-items:center;gap:4px;flex:1}
.nav-link{display:inline-flex;align-items:center;gap:6px;padding:9px 13px;border-radius:10px;font-size:13.5px;font-weight:600;color:var(--muted);background:none;border:0;white-space:nowrap}.nav-link:hover{background:var(--surface-2);color:var(--ink)}.nav-link.active{color:var(--accent);background:var(--soft)}
.caret{width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);opacity:.7}
.menu{position:relative}.menu-panel{position:absolute;top:calc(100% + 8px);left:0;min-width:250px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 40px #1a2c2018;padding:8px;display:none;z-index:50}.menu-panel.right{left:auto;right:0}.menu.open>.menu-panel{display:block}
.menu-item{display:block;width:100%;text-align:left;padding:10px 12px;border-radius:10px;border:0;background:none;color:var(--text)}.menu-item b{display:block;font-size:13.5px;font-weight:600;color:var(--ink)}.menu-item small{display:block;font-size:12px;color:var(--faint);margin-top:2px}.menu-item:hover,.menu-item.active{background:var(--surface-2)}.menu-item.active b{color:var(--accent)}.menu-item.new{color:var(--accent);font-weight:600;border-top:1px solid var(--line-2);margin-top:6px;border-radius:0 0 10px 10px}.menu-item.logout{color:var(--danger)}.menu-item.logout b{color:inherit}
.menu-head{padding:10px 12px 12px;border-bottom:1px solid var(--line-2);margin-bottom:6px}.menu-head b{display:block;font-size:13.5px;color:var(--ink)}.menu-head small{font-size:12px;color:var(--faint)}
.apps-panel{min-width:320px}.menu-group{padding:6px 4px 10px;border-bottom:1px solid var(--line-2)}.menu-group:last-of-type{border:0}.menu-title{display:grid;grid-template-columns:auto 1fr;column-gap:10px;align-items:center;padding:6px 8px;border-radius:10px}.menu-title:hover{background:var(--surface-2)}.menu-title b{font-size:14px;color:var(--ink)}.menu-title small{grid-column:2;font-size:11.5px;color:var(--faint)}.app-dot{width:8px;height:8px;border-radius:50%;background:#c9d2c4;grid-row:span 2}.app-dot.on{background:#5fae7a}
.menu-links{display:flex;flex-wrap:wrap;gap:6px;padding:6px 8px 0 26px}.menu-links a{font-size:12.5px;font-weight:600;color:var(--accent);background:var(--soft);padding:5px 10px;border-radius:999px}.menu-links a:hover{background:var(--soft-2)}
.user-menu{margin-left:auto}.user-chip{display:flex;align-items:center;gap:9px;padding:5px 10px 5px 5px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font-size:13px;font-weight:600}.user-chip em{font-style:normal}.avatar{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--soft-2);color:var(--accent);font-weight:700;font-size:13px}
.nav-toggle{display:none;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:8px 12px;font-size:13px;font-weight:600;color:var(--ink);margin-left:auto}.nav-toggle span{display:none}
/* Page */
.page{flex:1}.page-inner{max-width:1240px;margin:0 auto;padding:34px 28px 60px}
.heading,.page-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:26px;flex-wrap:wrap}.eyebrow{font-size:11px;letter-spacing:1.8px;color:var(--faint);font-weight:600;text-transform:uppercase}.heading h1,.page-heading h1,h1{font:700 30px Manrope,sans-serif;letter-spacing:-1px;margin:6px 0 0}.title-dot{color:#7fb079}.heading p,.page-heading p{font-size:14px;color:var(--muted);margin:8px 0 0;max-width:720px}
.btn,.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font-size:13.5px;font-weight:600;white-space:nowrap;line-height:1.2}.btn:hover,.button:hover{background:var(--surface-2)}.btn.primary,.button.primary,button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover,.button.primary:hover,button.primary:hover{background:var(--accent-2);border-color:var(--accent-2)}button.primary{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:10px;font-size:13.5px;font-weight:600;border:1px solid var(--accent)}.wide{width:100%;margin-top:18px}
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}.metrics article{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;box-shadow:var(--shadow)}.metrics article>span{font-size:13px;color:var(--muted);font-weight:500}.metrics strong{display:block;font:700 32px Manrope,sans-serif;letter-spacing:-1px;margin-top:10px;color:var(--ink)}.metrics strong small{font-size:16px;color:var(--faint);font-weight:500;margin-left:5px}.metrics p{font-size:12px;color:var(--faint);margin:8px 0 0}.metrics i{position:absolute;right:18px;top:18px;font-style:normal;color:#8fb08a;font-size:16px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:22px;box-shadow:var(--shadow)}.card-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:20px 24px}.card h2{font:700 16px Manrope,sans-serif;letter-spacing:-.2px;margin:0}.card-heading p,.card p{color:var(--muted);font-size:13px;line-height:1.6;margin:6px 0 0}.card>p,.card>h2,.card>.form-grid,.card>form,.card>.table-wrap,.card>h3{margin-left:24px;margin-right:24px}.card>h2{padding-top:22px}.card>p:last-child,.card>.form-grid:last-child{padding-bottom:22px}.card>form{padding-bottom:22px}.card>h3{margin-top:18px}
.badge{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap}.badge.green{background:var(--soft);color:#3d7a4f}.badge.neutral{background:#eef0e9;color:#77857a}
.dashboard-grid{display:grid;grid-template-columns:1.85fr 1fr;gap:22px}.chart{height:190px;padding:4px 25px 8px;display:flex;align-items:flex-end;gap:12px;border-bottom:1px solid var(--line-2);margin:0 24px 20px}.bar-column{flex:1;text-align:center}.bar{background:linear-gradient(#9dc48a,#3f8a5f);border-radius:5px 5px 0 0;min-width:6px;max-width:32px;margin:0 auto 10px}.bar-column small{font-size:10px;color:var(--faint)}.empty-note{padding:0 24px 18px;font-size:12px!important}
.warehouse{background:linear-gradient(135deg,#eef3e6,#dfe9d6);padding:24px}.warehouse h2{font-size:24px;font-weight:700;letter-spacing:-.8px;margin-top:14px}.warehouse p{color:#5f7460}.warehouse dl{display:flex;gap:35px;border-top:1px solid #c7d4bb;padding-top:18px;margin:20px 0 18px}.warehouse dt{font-size:11.5px;color:#6f8266}.warehouse dd{font:700 24px Manrope,sans-serif;margin:6px 0 0;color:var(--ink)}.warehouse>a{font-size:13px;color:var(--accent);font-weight:600}
.count{font-size:11.5px;background:var(--surface-2);border:1px solid var(--line-2);padding:2px 7px;border-radius:999px;margin-left:8px;color:var(--muted);font-weight:600}
.table-scroll,.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:13px;white-space:nowrap}th{font-size:11px;letter-spacing:.8px;color:var(--faint);font-weight:600;background:var(--surface-2);padding:12px 24px;border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2);text-transform:uppercase}td{padding:16px 24px;border-bottom:1px solid var(--line-2);color:var(--text);vertical-align:middle}tbody tr:last-child td{border:0}tbody tr:hover td{background:#fafbf8}td strong{font-size:13.5px;color:var(--ink);font-weight:600}td small{display:block;font-size:12px;color:var(--faint);margin-top:4px}
.app-name{display:flex;align-items:center;gap:12px}.game-icon{display:grid;place-items:center;background:radial-gradient(#2f6d52,#0f3a2c);width:38px;height:40px;border-radius:11px;font-size:24px;color:#f1d68d;border:1px solid #cfc78e}.table-link{font-size:13px;color:var(--accent);display:block;font-weight:600}.table-link.muted{font-size:12px;color:var(--faint);margin-top:5px;font-weight:500}
.page-footer{max-width:1240px;margin:0 auto;width:100%;padding:0 28px 26px;display:flex;gap:14px;align-items:center;font-size:11px;letter-spacing:1.5px;color:var(--faint);font-weight:600}.page-footer small{font-size:12px;letter-spacing:0;font-weight:400;color:#a5b0a2}
/* Forms */
.form-card{padding:26px}.form-card h2{margin-bottom:20px}.form-card .card-heading{padding:0;margin-bottom:20px}.form-card .card-heading h2{margin:0}.form-card h3{font-size:14px;font-weight:700;margin:22px 0 8px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 22px}label{display:block;font-size:13px;color:var(--text);margin-bottom:18px;font-weight:600}input,select,textarea{display:block;width:100%;margin-top:7px;border:1px solid var(--line);border-radius:10px;padding:11px 13px;background:#fdfefc;color:var(--ink);font-size:14px;font-weight:400}input:hover,select:hover,textarea:hover{border-color:#cfd8c8}textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;resize:vertical;line-height:1.6}label small{display:block;color:var(--faint);font-size:12px;font-weight:400;line-height:1.5;margin:6px 0}input[readonly]{background:var(--surface-2);color:var(--muted)}
.note{background:var(--surface-2);border:1px solid var(--line-2);padding:14px 16px;border-radius:10px;font-size:13px;line-height:1.7;color:var(--muted);margin-top:12px}.note a{text-decoration:underline;color:var(--accent)}.note strong{color:var(--ink)}code{font-size:12px;background:var(--surface-2);padding:2px 6px;border-radius:6px;color:var(--ink)}
.form-actions{display:flex;justify-content:flex-end;gap:12px;padding:6px 0 0}
.toolbar{display:flex;align-items:center;gap:12px;justify-content:space-between;margin-bottom:18px;flex-wrap:wrap}.toolbar form{display:flex;gap:9px;flex-wrap:wrap}.toolbar input,.toolbar select{margin:0;width:auto;font-size:13px;padding:9px 12px}
.notice{padding:13px 16px;border-radius:10px;background:var(--soft);border:1px solid #cfe2c6;color:#2f6a41;margin-bottom:20px;font-size:13.5px;font-weight:500}.notice.error{background:var(--danger-bg);color:var(--danger);border-color:#f1d5ca}.notice p{margin:4px 0}
.level-number{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid var(--line);border-radius:9px;color:var(--accent);background:var(--surface-2);font-size:13px;font-weight:700}
.mini-stacks{display:flex;gap:4px;margin-top:8px;height:22px}.mini-stacks>span{display:flex;flex-direction:column-reverse;justify-content:flex-start;gap:1px;background:#eef0e9;min-width:12px;border-radius:3px;overflow:hidden}.mini-stacks i{width:12px;height:4px;display:block}
.pagination{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--muted);margin:22px 0}.pagination a{color:var(--accent);font-weight:600}
/* Level editor */
.editor-layout{display:grid;grid-template-columns:1fr 1fr;gap:22px}.palette{display:flex;gap:10px;margin:12px 0;flex-wrap:wrap}.palette button{width:34px;height:34px;border:3px solid #fff;outline:1px solid #d8ddd2;border-radius:50%;box-shadow:0 3px 6px #0001}.palette button.active{outline:3px solid var(--accent)}.muted{color:var(--muted)!important;font-size:13px!important}
.preview-card{background:radial-gradient(#26694c,#0c3a2d);padding:26px 20px;color:#d6e3ba}.preview-card>.eyebrow{color:#a8c797}.preview-card p{color:#a3c19a;text-align:center;margin:22px 0}#board-preview{display:flex;flex-wrap:wrap;justify-content:center;gap:24px;padding:36px 10px 20px}.edit-tube{width:70px;text-align:center}.edit-stack{height:145px;width:100%;display:flex;flex-direction:column-reverse;align-items:center;gap:5px;padding:10px 3px;border:2px solid #d4b675;border-top:1px solid #e6c994;border-radius:12px 12px 18px 18px;background:#d9ffff0d;cursor:pointer}.edit-stack i{width:49px;height:25px;border:2px solid #fff6;border-radius:50%;box-shadow:0 4px 0 #ffffff55,inset 0 -3px 4px #0002}.edit-tube button{background:none;border:0;color:#bdd1a8;font-size:17px}.edit-tube small{font-size:11px;padding:0 9px;color:#afc797}#board-counts{text-align:center;font-size:12px;color:#bed3ad}
.publish-card{display:flex;justify-content:space-between;align-items:center;padding:22px 24px;gap:16px}.publish-card p{margin:4px 0 0}
.empty{white-space:normal;text-align:center;padding:40px;color:var(--faint)}pre{white-space:pre-wrap;word-break:break-word;max-width:420px;font-size:12px;color:var(--muted)}summary{cursor:pointer;color:var(--accent);font-weight:600}
/* Login */
.auth-body{display:grid;grid-template-columns:1fr 1fr;min-height:100vh;background:#fbfcf8}.auth-story{background:radial-gradient(ellipse at 10% 80%,#31664a,#123b2e 65%);color:#f5f7e9;padding:55px 65px;display:flex;flex-direction:column;justify-content:space-between}.auth-story .logo{color:#f5f7e9}.auth-story .logo-mark{background:#d6e4bd;color:#174735}.auth-story h1{font-size:42px;line-height:1.25;font-weight:600;letter-spacing:-1.6px;margin:18px 0;color:#f5f7e9}.auth-story .eyebrow{color:#a8c592}.auth-story p{font-size:15px;line-height:1.8;color:#b3c8b1}.auth-story>small{font-size:11px;letter-spacing:2px;color:#8da588}.orbit{font-size:34px;display:flex;gap:45px;align-items:center;color:#b7cba2;margin:40px 0}.orbit span{font-size:70px;color:#e5cd89;transform:rotate(-15deg)}
.auth-form{display:grid;place-items:center;padding:40px}.auth-form>div{width:100%;max-width:360px}.auth-form h2{font:700 28px Manrope,sans-serif;letter-spacing:-.8px;margin:12px 0}.auth-form p{font-size:14px;color:var(--muted);margin-bottom:26px}.auth-note{border-top:1px solid var(--line-2);padding-top:18px;margin-top:26px;text-align:center;font-size:12px;color:var(--faint)}.auth-form input{padding:13px}.auth-form small{font-size:12px;color:var(--faint)}
/* Responsive */
@media(max-width:1100px){.metrics{gap:12px}.metrics article{padding:18px 16px}.metrics i{display:none}.dashboard-grid{grid-template-columns:1.5fr 1fr}.chart{gap:8px;padding-left:5px;padding-right:5px}.auth-story{padding:40px}.auth-story h1{font-size:34px}.nav-link{padding:9px 10px;font-size:13px}}
@media(max-width:860px){.topbar-inner{flex-wrap:wrap;height:auto;min-height:60px;padding:10px 18px;gap:12px}.nav-toggle{display:inline-flex;order:2}.user-menu{order:3;margin-left:0}.user-chip em{display:none}.main-nav{display:none;order:4;flex-basis:100%;flex-direction:column;align-items:stretch;gap:2px;padding:6px 0 10px;border-top:1px solid var(--line-2)}.topbar.nav-open .main-nav{display:flex}.menu-panel{position:static;display:none;box-shadow:none;border:0;background:var(--surface-2);margin:4px 0 8px;min-width:0}.apps-panel{min-width:0}.menu.open>.menu-panel{display:block}.page-inner{padding:22px 18px 50px}.heading h1,h1{font-size:26px}.metrics{grid-template-columns:repeat(2,1fr);gap:12px}.metrics strong{font-size:28px}.dashboard-grid,.editor-layout{grid-template-columns:minmax(0,1fr)}.chart{height:160px}.warehouse{display:none}.form-grid{grid-template-columns:1fr}.form-card{padding:20px}.toolbar input{max-width:200px}.toolbar select{max-width:170px}.publish-card{align-items:flex-start;flex-direction:column}.auth-body{display:block}.auth-story{padding:25px}.auth-story>div,.auth-story>small{display:none}.auth-form{padding:50px 24px}.page-footer{padding:0 18px 20px}.card-heading{padding:18px}.card-heading p{font-size:12.5px}th,td{padding-left:16px;padding-right:16px}.card>p,.card>h2,.card>.form-grid,.card>form,.card>.table-wrap,.card>h3{margin-left:18px;margin-right:18px}.page,.dashboard-grid,.card,.editor-layout{min-width:0}}
/* Online now */
.metric-link{display:block;color:inherit}.live-metric{border-color:#bfe0c4;background:linear-gradient(160deg,#fff,#eef6ea)}.live-metric strong{color:var(--accent)}.pulse{width:10px;height:10px;border-radius:50%;background:#43b36a;box-shadow:0 0 0 0 #43b36a80;animation:pulse 1.8s infinite}@keyframes pulse{70%{box-shadow:0 0 0 10px #43b36a00}100%{box-shadow:0 0 0 0 #43b36a00}}
.metrics{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.live-badge{display:inline-grid;place-items:center;min-width:22px;height:20px;padding:0 6px;border-radius:999px;background:#43b36a;color:#fff;font-size:11px;font-weight:700;margin-left:6px;vertical-align:middle}
.online-total{text-align:right}.online-total strong{display:block;font:800 40px Manrope,sans-serif;color:var(--accent);letter-spacing:-1.5px;line-height:1}.online-total span{font-size:12px;color:var(--faint);letter-spacing:1.5px;text-transform:uppercase;font-weight:600}
.online-card .card-heading h2{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.online-person{display:flex;align-items:center;gap:12px}.person-avatar{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;background:var(--soft-2);color:var(--accent);font-weight:700;overflow:hidden;flex:none}.person-avatar img{width:100%;height:100%;object-fit:cover}
.activity{display:inline-flex;align-items:center;gap:7px;font-weight:600}.activity::before{content:'';width:8px;height:8px;border-radius:50%;background:#b9c4b5}.activity.duel::before{background:#e0932c;box-shadow:0 0 0 3px #e0932c22}.activity.arena::before{background:#43b36a}.activity.campaign::before{background:#5b8fd6}
/* Insights */
.section-title{font:700 13px Manrope,sans-serif;letter-spacing:1.6px;text-transform:uppercase;color:var(--faint);margin:30px 0 12px}.section-title:first-of-type{margin-top:0}.heading-actions{display:flex;gap:10px;flex-wrap:wrap}
.small-strong{font-size:15px!important;letter-spacing:0!important;line-height:1.4}.insight-chart{height:170px}.bar-pair{display:flex;align-items:flex-end;justify-content:center;gap:2px}.bar-pair .bar{margin:0 0 10px}.bar.alt{background:linear-gradient(#f0d488,#c99a2e)}
.split{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:0 24px 22px}.split h3{font-size:13px;font-weight:700;margin:4px 0 10px;color:var(--muted)}
.stat-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}.stat-list.padded{padding:0 24px 22px}.stat-list li{position:relative;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;border-radius:8px;background:var(--surface-2);overflow:hidden;font-size:13px}.stat-list li span{position:relative;z-index:1;color:var(--text)}.stat-list li b{position:relative;z-index:1;color:var(--ink)}.stat-list li i{position:absolute;left:0;top:0;bottom:0;background:#dbe9d6;border-radius:8px;max-width:100%}.stat-list .mono{font-family:ui-monospace,Menlo,monospace;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card-note{margin:0 24px 20px;font-size:12.5px;color:var(--muted)}
@media(max-width:860px){.split{grid-template-columns:1fr;padding:0 18px 18px}.stat-list.padded{padding:0 18px 18px}.card-note{margin:0 18px 18px}}
