:root{--ink:#0b0f0e;--ink-2:#070a09;--panel:#131818;--panel-2:#1a2020;--panel-3:#232a2c;--line:#2d3338;--field:#151b1b;--field-end:#0f1414;--chalk:#f8fafc;--chalk-dim:#9ca3af;--chalk-faint:#6b7280;--accent:#4ade80;--accent-2:#3fbd6d;--accent-hover:#6ee7a0;--accent-ink:#0b0f0e;--teamA:#4fb3ff;--teamA-dim:#27577d;--teamB:#ff6b5b;--teamB-dim:#80352c;--danger:#ef4444;--illegal:#f0abfc;--illegal-bg:rgba(240,171,252,.1);--illegal-line:rgba(240,171,252,.45);--hint:var(--chalk-dim);--radius:14px;--radius-sm:8px;--shadow: 0 8px 24px rgba(0,0,0,.35);--font-display:"Anton", "Arial Narrow", sans-serif;--font-body:"Barlow", "Segoe UI", system-ui, sans-serif;--font-mono:"JetBrains Mono", "Consolas", monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--ink);color:var(--chalk);font-family:var(--font-body);-webkit-font-smoothing:antialiased;min-height:100vh}#app{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3{font-family:var(--font-display);font-weight:400;letter-spacing:.02em;text-wrap:balance;margin:0}a{color:var(--accent)}button{font-family:var(--font-body);cursor:pointer}input,textarea,select{font-family:var(--font-body)}::selection{background:var(--accent);color:var(--accent-ink)}.topbar{display:flex;align-items:center;gap:16px;padding:12px 20px;background:var(--ink-2);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:40}.wordmark{background:none;border:0;padding:0;cursor:pointer;font-family:var(--font-display);font-size:22px;letter-spacing:.03em;color:var(--chalk);display:flex;align-items:center;gap:8px;white-space:nowrap}.wordmark .logo-header{height:40px;width:auto;display:block}.wordmark .logo-signet{height:32px;width:auto;display:none}.topbar span.wordmark{cursor:default}.step-trail ol{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-family:var(--font-mono);font-size:12px;color:var(--chalk-faint);text-transform:uppercase;letter-spacing:.06em;list-style:none;margin:0 0 12px;padding:0}.step-trail li{display:flex;align-items:center;gap:6px}.step-trail .step{padding:3px 9px;border-radius:999px;background:var(--panel);border:1px solid var(--line)}.step-trail .step.done{color:var(--chalk);border-color:#4ade8066}.editor-trail-row{display:flex;align-items:center;gap:14px;flex-wrap:nowrap;margin-bottom:6px;min-width:0}.editor-trail-row .step-trail{flex:none}.editor-trail-row .step-trail ol{margin:0}.editor-meta{margin:0;min-width:0;flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step-trail .step.now{color:var(--accent-ink);background:var(--accent);border-color:var(--accent);font-weight:700}.step-trail .sep{color:var(--chalk-faint)}.topbar-actions{margin-left:auto;display:flex;gap:8px}.topbar .menu-toggle{display:none;margin-left:auto;width:44px;height:44px;padding:0;justify-content:center}.menu-toggle .icon{width:22px;height:22px}.mobile-menu{position:absolute;top:100%;left:0;right:0;z-index:50;display:flex;flex-direction:column;gap:4px;padding:10px 12px 14px;background:var(--ink-2);border-bottom:1px solid var(--line);box-shadow:var(--shadow)}.mobile-menu-item{appearance:none;display:flex;align-items:center;gap:12px;min-height:48px;padding:0 14px;border-radius:var(--radius-sm);background:transparent;border:1px solid transparent;color:var(--chalk);font:600 15px var(--font-body);text-align:left;cursor:pointer}.mobile-menu-item:hover{background:var(--panel)}.mobile-menu-item[aria-current=page]{border-color:var(--line);background:var(--panel)}.mobile-menu-item.primary{color:var(--accent)}.mobile-menu-item .icon{width:20px;height:20px}.btn{appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--chalk);padding:9px 16px;border-radius:999px;font-size:14px;font-weight:600;display:inline-flex;align-items:center;gap:7px;transition:transform .08s,background .15s,border-color .15s}.btn:hover{background:var(--panel-2);border-color:var(--chalk-faint)}.btn:active{transform:scale(.97)}.btn:focus-visible,a:focus-visible,[tabindex]:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{background:transparent;border-color:transparent;color:var(--chalk-dim)}.btn-ghost:hover{background:var(--panel);color:var(--chalk)}.btn-danger{background:transparent;border-color:var(--teamB-dim);color:#f2a091}.btn-danger:hover{background:#ff6b5b26}.btn-sm{padding:6px 11px;font-size:12.5px}.btn[disabled]{opacity:.4;cursor:not-allowed}.icon-btn{width:30px;height:30px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:var(--panel);color:var(--chalk-dim);font-size:14px;padding:0}.icon-btn:hover{background:var(--panel-2);color:var(--chalk)}.icon-btn.active{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}main{flex:1;width:100%}.wrap{max-width:1180px;margin:0 auto;padding:28px 20px 60px}.wrap-editor{max-width:1640px;padding:20px 16px 60px}.eyebrow{font-family:var(--font-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:0 0 6px}.lede{color:var(--chalk-dim);max-width:60ch;margin:10px 0 0;line-height:1.55}.section-head{margin-bottom:22px}.tile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin-top:22px}.tile{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;text-align:left;color:var(--chalk);position:relative;overflow:hidden;display:flex;flex-direction:column;gap:8px;min-height:150px}.tile:hover{border-color:var(--accent-2);background:var(--panel-2)}.tile .tile-num{font-family:var(--font-display);font-size:40px;color:var(--panel-3);line-height:1;-webkit-text-stroke:1px var(--chalk-faint)}.tile .tile-title{font-family:var(--font-display);font-size:21px;letter-spacing:.01em}.tile .tile-desc{font-size:13.5px;color:var(--chalk-dim);line-height:1.45;margin-top:auto}.tile .tile-tag{position:absolute;top:14px;right:14px;font-family:var(--font-mono);font-size:10.5px;color:var(--chalk-faint);border:1px solid var(--line);padding:2px 8px;border-radius:999px}.picker-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:20px}@media(max-width:760px){.picker-grid{grid-template-columns:1fr}}.field-box{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.field-box h3{font-size:15px;text-transform:uppercase;letter-spacing:.08em;color:var(--chalk-dim);margin-bottom:12px}label.f-label{display:block;font-size:12.5px;color:var(--chalk-faint);margin:14px 0 6px;text-transform:uppercase;letter-spacing:.05em}label.f-label:first-child{margin-top:0}select,.textinput{width:100%;background:var(--ink-2);border:1px solid var(--line);color:var(--chalk);padding:10px 12px;border-radius:var(--radius-sm);font-size:14.5px}select:focus,.textinput:focus{border-color:var(--accent-2)}textarea.textinput{resize:vertical;min-height:64px;line-height:1.4}.info-card{margin-top:14px;background:var(--ink-2);border:1px dashed var(--line);border-radius:var(--radius-sm);padding:12px 14px;font-size:13px;color:var(--chalk-dim);line-height:1.5}.info-card b{color:var(--chalk)}.info-card .src{display:block;margin-top:6px;font-family:var(--font-mono);font-size:11px}.info-card .src a{color:var(--chalk-faint);text-decoration:underline}.info-card .src a:hover{color:var(--accent)}.vs-divider{display:flex;align-items:center;justify-content:center;margin:6px 0;font-family:var(--font-display);color:var(--chalk-faint);font-size:15px;letter-spacing:.1em}.footer-actions{display:flex;justify-content:space-between;gap:10px;margin-top:24px}.editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}@media(max-width:1000px){.editor-layout{grid-template-columns:1fr}}.field-panel{background:var(--ink-2);border:1px solid var(--line);border-radius:var(--radius);padding:10px;position:relative}.draw-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;align-items:center}.tool-btn{background:var(--panel);border:1px solid var(--line);color:var(--chalk-dim);padding:8px 12px;border-radius:999px;font-size:12.5px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.tool-btn.active{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.tool-hint{font-size:12px;color:var(--chalk-faint);margin-left:auto;font-family:var(--font-mono)}.field-svg-wrap{position:relative;width:100%;aspect-ratio:16/9;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--line);background:var(--field-end);touch-action:none}.field-svg-wrap svg{display:block;width:100%;height:100%}.field-svg-wrap.drawing{cursor:crosshair}.los-snap-hint{position:absolute;top:10px;left:10px;pointer-events:none;padding:5px 8px;border-radius:5px;background:var(--ink-2);color:var(--accent);font:11px var(--font-body);box-shadow:0 2px 8px #0002}.draw-actions-stack{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:12px}.draw-actions-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:center;background:#0b0f0ed1;padding:6px 10px;border-radius:999px;border:1px solid var(--line)}.preset-picker{max-width:100%;border-radius:12px;gap:6px}.preset-picker .tool-hint{margin-left:0}.preset-picker .textinput{width:auto;min-width:0;padding:6px 8px;font-size:12.5px}.preset-picker .preset-select{width:240px;max-width:100%}.preset-picker .preset-depth{width:64px}.preset-manual-hint{margin:0;font-size:11.5px;opacity:.85;text-align:center}.player-pop{position:absolute;z-index:30;background:var(--panel);border:1px solid var(--accent-2);border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:10px;width:190px;display:flex;flex-direction:column;gap:8px}.player-pop input{width:100%}.player-pop .row{display:flex;gap:6px}.field-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:12px;font-size:12px;color:var(--chalk-dim)}.field-legend .li{display:flex;align-items:center;gap:6px}.field-legend .dot{width:11px;height:11px;border-radius:50%;display:inline-block}.field-legend .ln{width:20px;height:0;border-top:2px solid;display:inline-block}.sidebar{display:flex;flex-direction:column;gap:14px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.app-login main{flex:1;display:flex}.login-page{flex:1;display:flex;align-items:center;justify-content:center;padding:32px 16px 48px;background-color:var(--ink);background-size:cover;background-position:62% center;position:relative}.login-page:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#0b0f0ef0,#0b0f0ec7 45%,#0b0f0e73)}.login-panel{position:relative;width:100%;max-width:420px;display:flex;flex-direction:column;align-items:center;gap:18px}.login-logo{width:min(260px,70vw);height:auto}.login-panel .account-card{width:100%;box-shadow:var(--shadow);background:#131818eb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.login-panel .account-notice{width:100%;margin:0;background:#2a1414}.login-loading .login-logo{position:relative;opacity:.9;animation:login-pulse 1.4s ease-in-out infinite}@keyframes login-pulse{50%{opacity:.45}}@media(prefers-reduced-motion:reduce){.login-loading .login-logo{animation:none}}@media(max-width:640px){.login-page{align-items:flex-start;padding-top:24px}.login-page:before{background:#0b0f0ed1}}.account-wrap .section-head{max-width:520px}.account-wrap h1:focus{outline:none}.account-card{max-width:520px;display:flex;flex-direction:column;gap:12px}.account-card form{display:flex;flex-direction:column;gap:10px}.account-card form label.f-label{margin:4px 0 0}.account-card .textinput{width:100%;min-height:44px;font-size:16px}.account-card .btn{justify-content:center;min-height:44px}.otp-input{font-family:var(--font-mono);letter-spacing:.3em;font-size:20px!important}.btn-google{background:#fff;color:#1f1f1f;border-color:#dadce0}.btn-google:hover{background:#f2f2f2;border-color:#dadce0}.account-divider{display:flex;align-items:center;gap:10px;color:var(--chalk-faint);font-size:12.5px;text-transform:uppercase;letter-spacing:.05em}.account-divider:before,.account-divider:after{content:"";flex:1;border-top:1px solid var(--line)}.account-note,.account-sent{color:var(--chalk-dim);margin:0;line-height:1.5;font-size:14px}.account-who{margin:0;font-size:17px;overflow-wrap:anywhere}.account-mail{color:var(--chalk-dim)}.account-error{margin:0;color:#fca5a5;background:#ef44441f;border:1px solid rgba(239,68,68,.4);border-radius:var(--radius-sm);padding:8px 10px}.account-notice{max-width:520px;margin:0 0 12px}.account-links{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between}.card h3{font-size:13px;text-transform:uppercase;letter-spacing:.07em;color:var(--chalk-dim);margin-bottom:10px}.roster{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.chip{font-family:var(--font-mono);font-size:11.5px;padding:4px 9px;border-radius:999px;border:1px solid;background:transparent;color:var(--chalk);display:inline-flex;align-items:center;gap:5px}.chip.a{border-color:var(--teamA);color:var(--teamA)}.chip.b{border-color:var(--teamB);color:var(--teamB)}.chip.tag{border-color:var(--accent);color:var(--accent)}.chip button{background:none;border:0;color:inherit;font-size:12px;padding:0;line-height:1}.add-row{display:flex;gap:8px}.route-list{display:flex;flex-direction:column;gap:6px}.route-item{display:flex;align-items:center;gap:8px;background:var(--ink-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:7px 10px;font-size:13px}.route-item .tag{font-family:var(--font-mono);font-size:10.5px;color:var(--chalk-faint);text-transform:uppercase}.route-item .grow{flex:1;min-width:0;overflow-wrap:anywhere}.route-item{flex-wrap:wrap}.line-color-control{display:flex;align-items:center;gap:4px;margin-left:auto}.line-color-control input[type=color]{width:30px;height:30px;padding:2px;border:1px solid var(--line);border-radius:6px;background:var(--ink-2);cursor:pointer}.line-color-control .icon-btn:disabled{opacity:.35;cursor:default}.empty-note{font-size:12.5px;color:var(--chalk-faint);font-style:italic}.stamp{font-family:var(--font-mono);font-size:11px;color:var(--chalk-faint);margin-top:4px}.stack-actions{display:flex;flex-direction:column;gap:8px}.stack-actions .btn{justify-content:center;width:100%}.dash-top{display:grid;grid-template-columns:minmax(0,2fr) minmax(240px,1fr);gap:16px;align-items:stretch}@media(max-width:760px){.dash-top{grid-template-columns:1fr}}.dash-quick,.dash-stats{display:flex;flex-direction:column;gap:14px}.seg{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;background:var(--ink-2);border:1px solid var(--line);border-radius:999px;align-self:flex-start}.seg-btn{appearance:none;border:0;background:transparent;color:var(--chalk-dim);padding:7px 14px;border-radius:999px;font-size:13px;font-weight:600}.seg-btn:hover{color:var(--chalk)}.seg-btn.active{background:var(--accent);color:var(--accent-ink)}.dash-phases{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}.tile.dash-phase{min-height:96px;padding:16px}.dash-wizard{align-self:flex-start}.stat-big{display:flex;align-items:baseline;gap:10px}.stat-big .stat-num{font-family:var(--font-display);font-size:52px;line-height:1;color:var(--accent)}.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stat{display:flex;flex-direction:column;gap:2px;background:var(--ink-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px}.stat .stat-num{font-family:var(--font-display);font-size:24px;line-height:1}.stat-label{font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--chalk-faint)}.dash-stats .btn{margin-top:auto;align-self:flex-start}.dash-recent-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:32px 0 14px}.dash-recent-head h2{font-size:22px}.dash-recent{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}.dash-card{appearance:none;padding:0;text-align:left;color:var(--chalk);font:inherit}.dash-card:hover{border-color:var(--accent-2)}.dash-card .pb-thumb{aspect-ratio:1/1}.settings-layout{display:grid;grid-template-columns:minmax(300px,420px) minmax(0,1fr);gap:16px;align-items:start}@media(max-width:900px){.settings-layout{grid-template-columns:1fr}}.settings-preview{position:sticky;top:76px}.preset-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.preset-card{appearance:none;display:flex;flex-direction:column;gap:6px;text-align:left;padding:10px;border-radius:var(--radius-sm);background:var(--ink-2);border:1px solid var(--line);color:var(--chalk)}.preset-card:hover{border-color:var(--chalk-faint)}.preset-card.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.preset-swatch{height:44px;border-radius:6px;border:1px solid;display:flex;align-items:center;justify-content:center;gap:6px}.preset-swatch i{width:12px;height:12px;border-radius:50%;display:block}.preset-name{font-weight:700;font-size:13.5px}.preset-desc{font-size:11.5px;color:var(--chalk-faint);line-height:1.35}.color-list{display:flex;flex-direction:column;gap:8px}.color-row{display:flex;align-items:center;gap:10px;font-size:13.5px}.color-row .grow{flex:1}.color-row code{font-family:var(--font-mono);font-size:11.5px;color:var(--chalk-faint)}.color-row input[type=color]{width:34px;height:34px;padding:2px;border-radius:8px;border:1px solid var(--line);background:var(--ink-2);cursor:pointer}.rule-bar{display:flex;align-items:center;gap:8px;height:44px;width:100%;max-width:680px;margin:8px auto 0;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--ink-2);font-size:13px;color:var(--chalk-dim)}.rule-bar[data-state=illegal]{border-color:var(--illegal-line);background:var(--illegal-bg);color:var(--chalk);box-shadow:inset 3px 0 0 var(--illegal)}.rule-bar[data-state=hint]{color:var(--chalk)}.rule-bar-icon{font-size:15px;width:18px;text-align:center}.rule-bar[data-state=illegal] .rule-bar-icon{color:var(--illegal)}.rule-bar-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rule-bar-more{min-height:32px;white-space:nowrap}.rule-card h3:focus{outline:2px solid var(--accent);outline-offset:3px}.rule-group{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--chalk-faint);margin:8px 0 4px}.rule-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.rule-item{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:7px 9px;border-radius:var(--radius-sm);background:var(--ink-2);border:1px solid var(--line);font-size:13px}.rule-item.is-illegal{box-shadow:inset 3px 0 0 var(--illegal);border-color:var(--illegal-line)}.rule-item.is-hint{box-shadow:inset 3px 0 0 var(--hint)}.rule-src{font-family:var(--font-mono);font-size:11px;color:var(--chalk-faint)}.rule-players{display:flex;flex-wrap:wrap;gap:4px;width:100%}.rule-players .chip{cursor:pointer;border-color:var(--line);color:var(--chalk)}.rule-badge{position:absolute;top:8px;right:8px;z-index:2;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--ink-2);color:var(--illegal);border:1px solid var(--illegal-line)}.swap-dropped{margin-top:6px;color:var(--illegal)}.toast{display:flex;align-items:center;gap:12px}.toast-action{appearance:none;border:1px solid currentColor;background:transparent;color:inherit;font-weight:700;border-radius:999px;padding:4px 12px;min-height:32px;cursor:pointer}.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}.rule-profile-desc{font-size:12.5px;color:var(--chalk-dim);line-height:1.45;margin:10px 0 6px}.rule-profile-sources{margin:0;padding-left:18px;font-size:12px;line-height:1.5}.rule-profile-sources a{color:var(--chalk-faint)}.rule-profile-sources a:hover{color:var(--accent)}.icon{display:inline-flex;width:1.15em;height:1.15em;flex:none;line-height:0}.icon svg{width:100%;height:100%;display:block}.icon-btn .icon{width:16px;height:16px}.chip button .icon{width:11px;height:11px}.tile-icon{width:24px;height:24px;color:var(--accent)}.tile-icon-lg{width:40px;height:40px}.tile .tile-icon+.tile-title{margin-top:2px}.dash-banner{display:block;width:100%;height:auto;min-height:88px;object-fit:cover;object-position:left center;border-radius:var(--radius);border:1px solid var(--line);margin-bottom:22px;background:var(--ink-2)}.empty-signet{display:block;width:56px;height:56px;margin:0 auto 12px;opacity:.9}.pb-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:20px}.pb-toolbar .grow{flex:1}.pb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}.pb-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column}.pb-thumb{background:var(--field-end);aspect-ratio:4/5;position:relative}.pb-thumb svg{width:100%;height:100%;display:block}.pb-select{position:absolute;top:8px;left:8px;z-index:2;width:19px;height:19px;accent-color:var(--accent)}.pb-body{padding:13px 14px 15px;display:flex;flex-direction:column;gap:6px}.pb-title{font-family:var(--font-display);font-size:18px;letter-spacing:.01em}.pb-tags{display:flex;flex-wrap:wrap;gap:5px;font-family:var(--font-mono);font-size:10px;color:var(--chalk-faint);text-transform:uppercase}.pb-tags span{border:1px solid var(--line);padding:2px 7px;border-radius:999px}.pb-desc{font-size:12.5px;color:var(--chalk-dim);line-height:1.4;min-height:0}.pb-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.empty-state{text-align:center;padding:60px 20px;color:var(--chalk-faint);border:1px dashed var(--line);border-radius:var(--radius);margin-top:10px}.modal-overlay{position:fixed;inset:0;background:#050806b8;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;max-width:520px;width:100%;box-shadow:var(--shadow);max-height:85vh;display:flex;flex-direction:column;gap:12px}.modal h3{font-size:19px}.modal textarea.textinput{min-height:180px;font-family:var(--font-mono);font-size:12px;flex:1}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--accent);color:var(--accent-ink);padding:10px 18px;border-radius:999px;font-weight:600;font-size:13.5px;z-index:200;box-shadow:var(--shadow)}#printArea{display:none}@media print{body *{visibility:hidden}#printArea,#printArea *{visibility:visible}#printArea{display:block;position:absolute;top:0;left:0;width:100%}.print-page{page-break-after:always;width:100%;min-height:100vh;padding:12mm;box-sizing:border-box;background:#fff!important;color:#111}.print-page:last-child{page-break-after:auto}.print-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid #111;padding-bottom:8px;margin-bottom:10px}.print-head h2{font-family:Anton,sans-serif;font-size:24px;color:#111}.print-tags{font-family:JetBrains Mono,monospace;font-size:10px;color:#444;text-transform:uppercase;letter-spacing:.05em}.print-field{width:100%;max-width:420px;margin:0 auto;border:1px solid #999}.print-notes{margin-top:10px;font-size:12px;line-height:1.5;color:#222}.print-notes b{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#555;margin-bottom:2px}.print-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px;font-size:10.5px;color:#333}@page{size:A4;margin:10mm}}@media(max-width:640px){.topbar-actions{display:none}.topbar .menu-toggle{display:inline-flex}.topbar{gap:10px;padding:10px 12px}.editor-trail-row{flex-wrap:wrap;gap:6px 12px}.editor-trail-row .step-trail{flex:1 1 100%;min-width:0}.editor-meta{white-space:normal}.wordmark .logo-header{display:none}.wordmark .logo-signet{display:block}.wrap{padding:18px 12px 90px}}.editor-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.editor-heading-copy{min-width:0}.editor-header-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.wrap-editor .section-head h1{font-size:23px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wrap-editor .section-head{margin-bottom:16px}.wrap-editor .eyebrow{font-size:12px;letter-spacing:.07em}.editor-layout{grid-template-columns:208px minmax(0,1fr) 320px;gap:18px}.editor-tools{padding:14px 12px;background:var(--ink-2);border:1px solid var(--line);border-radius:12px;min-width:0}.editor-tools h2{font:600 12px var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--chalk-faint);margin:0 0 14px}.editor-tools .draw-toolbar{flex-direction:column;align-items:stretch;gap:6px;margin:0}.editor-tools .tool-btn{border-radius:7px;padding:9px 10px;font-size:14px}.editor-tools .tool-hint{font:12px/1.45 var(--font-body);margin:6px 0 0}.editor-tools .tool-btn.active{box-shadow:inset 3px 0 0 var(--accent);background:var(--panel-2);border-color:var(--accent-2);color:var(--accent)}.editor-tool-options .draw-actions-stack{align-items:stretch;gap:12px;margin-top:16px}.editor-tool-options .draw-actions-row{padding:0;border:0;background:none;border-radius:0;justify-content:flex-start;gap:7px}.editor-tool-options .preset-select{width:100%}.editor-tool-options .preset-picker>.tool-hint:first-child{width:100%}.editor-tool-options .preset-depth{width:52px}.editor-tool-options .preset-picker .btn{padding:6px 8px}.editor-tool-options .preset-manual-hint{text-align:left}.editor-tool-options .draw-actions-row label{width:100%}.editor-tool-options .draw-actions-row>.btn{font-size:13px}.editor-tool-options .textinput,.wrap-editor .btn-sm{font-size:14px}.wrap-editor .chip{font-size:13px}.editor-tools-note{font-size:12px;color:var(--chalk-faint);line-height:1.6;border-top:1px solid var(--line);padding-top:14px;margin:20px 0 0}.editor-layout>.field-panel{background:transparent;border:0;padding:12px 18px;min-width:0}.canvas-heading{width:100%;max-width:680px;margin:0 auto 12px;display:flex;justify-content:space-between;gap:12px;font:12px var(--font-mono);color:var(--chalk-faint)}.canvas-heading>span:first-child{color:var(--chalk-dim)}.canvas-stage{display:flex;justify-content:center;align-items:flex-start}.canvas-stage .field-svg-wrap{width:100%;max-width:680px;height:clamp(260px,48dvh,460px);aspect-ratio:auto;border-radius:5px;box-shadow:0 12px 36px #0002}.wrap-editor .field-legend{max-width:680px;margin:14px auto 0;gap:8px 12px;font-size:12px;line-height:1.5;padding-top:12px;border-top:1px solid var(--line)}.editor-panels{display:flex;gap:4px;flex-shrink:0;padding:4px;border:1px solid var(--line);border-radius:9px;background:var(--ink-2)}.editor-panels .btn{flex:1;justify-content:center;border-radius:5px;padding:6px 8px;font-size:14px;border:0}.editor-panels .btn-primary{background:var(--panel-3);color:var(--accent)}.sidebar-content{min-height:0}.sidebar-content section>.card+.card{margin-top:10px}.wrap-editor .card{padding:12px;border-radius:10px}.wrap-editor label.f-label{margin-top:9px;margin-bottom:4px;font-size:12px}.wrap-editor .sidebar .textinput{padding:6px 8px;font-size:14px}.wrap-editor .sidebar textarea.textinput{min-height:44px}.wrap-editor .sidebar .tool-btn{padding:5px 8px;font-size:13px}.wrap-editor .sidebar .draw-toolbar{gap:5px}.wrap-editor .route-item{padding:7px;gap:5px;font-size:14px}.wrap-editor .route-item .tag{font-size:11px}.wrap-editor .stamp{font-size:11px;line-height:1.5}@media(min-width:1101px)and (min-height:650px){#app.app-editor{height:100dvh;min-height:0}.app-editor>.topbar{flex-shrink:0}.app-editor>main{min-height:0}.wrap-editor{height:100%;padding:16px 20px;display:flex;flex-direction:column}.wrap-editor .section-head{flex-shrink:0}.editor-layout{flex:1;min-height:0}.editor-tools{max-height:100%;overflow:auto}.editor-layout>.sidebar{height:100%;min-height:0;gap:10px}.sidebar-content{flex:1;overflow:auto;scrollbar-gutter:stable}}@media(max-width:1100px){.editor-heading{align-items:flex-start;flex-direction:column;gap:12px}.editor-header-actions{flex-wrap:wrap}.editor-layout{grid-template-columns:152px minmax(0,1fr);gap:12px}.editor-layout>.sidebar{grid-column:1 / -1}.editor-layout>.field-panel{padding:12px 0}}@media(max-width:640px){.editor-layout{grid-template-columns:1fr}.editor-tools .draw-toolbar{flex-direction:row;flex-wrap:wrap}.editor-tools .draw-toolbar>.tool-hint{width:100%}.editor-tool-options .preset-select{width:200px}.editor-tools-note{display:none}.canvas-heading{font-size:10px}.canvas-stage .field-svg-wrap{height:320px}}.print-dialog{max-width:800px;padding:24px;gap:20px;max-height:calc(100dvh - 40px)}.print-dialog-head h2{font-size:26px}.print-dialog-head p:not(.eyebrow){font-size:14px;color:var(--chalk-dim);margin:8px 0 0}.print-dialog-body{display:grid;grid-template-columns:250px minmax(0,1fr);gap:24px;overflow:auto;min-height:0}.print-options{min-width:0;padding:0;margin:0;border:0;display:flex;flex-direction:column;gap:8px}.print-section-title{font:600 12px var(--font-body);text-transform:uppercase;letter-spacing:.07em;color:var(--chalk-dim);margin-bottom:12px}.print-options label{font-size:13px;margin-top:8px;color:var(--chalk-dim)}.print-options select,.print-options input{font-size:14px;padding:9px 10px}.print-options select:disabled{opacity:.45}.print-instructions{display:flex;flex-direction:column;gap:7px;font-size:12px;line-height:1.5;padding:12px;margin-top:10px;background:var(--ink-2);border:1px solid var(--line);border-radius:8px;color:var(--chalk-dim)}.print-instructions strong{color:var(--chalk)}.print-preview{min-width:0;border:1px solid var(--line);border-radius:10px;background:var(--ink-2);padding:16px;display:flex;flex-direction:column}.print-preview-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.print-preview-head h3{margin:0;font-size:16px}.print-preview-head span{font-size:12px;color:var(--accent)}.print-preview p{font-size:12px;color:var(--chalk-faint);line-height:1.5}.print-preview ol{padding:0;margin:8px 0;list-style:none;max-height:330px;overflow:auto}.print-preview li{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.print-preview li:last-child{border:0}.print-preview li>div{min-width:0;display:flex;flex-direction:column;gap:4px}.print-preview li strong{font-size:14px;overflow-wrap:anywhere}.print-preview li div span{font-size:12px;color:var(--chalk-faint)}.print-number{display:grid;place-items:center;flex-shrink:0;width:34px;height:34px;border:1px solid var(--accent-2);border-radius:7px;color:var(--accent);font:700 15px var(--font-mono)}.print-preview .print-caption{margin-top:auto;padding-top:16px}.print-error,.print-validation{color:#ffb4ab;font-size:13px;margin:0}.print-dialog .modal-actions{flex-shrink:0;border-top:1px solid var(--line);padding-top:16px}@media(max-width:640px){.print-dialog{padding:16px;gap:14px}.print-dialog-body{grid-template-columns:1fr;gap:16px}.print-preview ol{max-height:200px}}.play-coaching{margin:10px 0;font-size:14px}.play-coaching summary{cursor:pointer;font-weight:600;padding:5px 0}.play-coaching ol{margin:6px 0;padding-left:22px}.play-coaching li{padding:3px 0;overflow-wrap:anywhere}.play-coaching li .icon-btn{margin-left:6px;vertical-align:middle}.play-coaching .add-row .textinput{min-width:0}.pb-call{font-size:14px;color:var(--muted);margin:4px 0 8px;overflow-wrap:anywhere}.play-call-fields{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:8px}.play-call-fields>div{min-width:0}.modal[data-testid=animation-player]{width:min(920px,100%);max-width:920px;max-height:calc(100dvh - 32px);overflow-y:auto;gap:10px}.animation-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.animation-heading h3{margin:0}.animation-call{margin:4px 0 0;color:var(--chalk-dim);font-size:14px;overflow-wrap:anywhere}.animation-stage{position:relative;flex:1;min-height:100px;height:min(52dvh,490px);border:1px solid var(--line);border-radius:8px;overflow:hidden}.animation-stage svg{display:block;width:100%;height:100%}.animation-players{position:absolute;inset:0;pointer-events:none}.animation-players>:not(.players-layer){display:none}.animation-backdrop .players-layer{display:none}.animation-backdrop .routes-layer,.animation-backdrop .assign-layer,.animation-backdrop .zone-layer{opacity:.3}.animation-status{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:var(--chalk-dim)}.animation-status output{font-variant-numeric:tabular-nums}.animation-timeline{display:flex;align-items:center;gap:12px;font-size:14px}.animation-timeline input{flex:1;min-width:0;accent-color:var(--accent)}.animation-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.animation-controls label{margin-left:auto;font-size:14px;display:flex;align-items:center;gap:8px}.animation-controls select{width:auto;padding:7px 10px}.login-summary{margin-top:24px;padding:18px;background:#13181899;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:inset 0 1px #f8fafc0d}.login-summary p{margin:0 0 14px;font-size:14px;color:var(--chalk-dim);line-height:1.55}.login-summary p:last-of-type{margin-bottom:0}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:12px;margin-top:14px}.feature-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;border-radius:var(--radius-sm);background:var(--ink-2);border:1px solid var(--line);text-align:center;font-size:11.5px;color:var(--chalk-dim);transition:all .2s}.feature-item:hover{border-color:var(--accent-2);background:var(--panel);color:var(--chalk)}.feature-item .icon{width:24px;height:24px;color:var(--accent)}.login-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 20px;background:var(--ink-2);border-top:1px solid var(--line);font-size:12px;color:var(--chalk-faint)}.login-footer a{color:inherit;text-decoration:none;cursor:pointer;transition:color .15s}.login-footer a:hover{color:var(--accent)}.legal-modal{max-width:600px;max-height:85vh;overflow-y:auto}.legal-modal h3{margin:20px 0 8px;font-size:16px}.legal-modal h3:first-child{margin-top:0}.legal-modal p{font-size:13px;line-height:1.6;color:var(--chalk-dim);margin:0 0 12px}.legal-modal p:last-of-type{margin-bottom:0}.legal-modal a{color:var(--accent);text-decoration:none}.legal-modal a:hover{text-decoration:underline}@media(max-width:640px){.login-footer{flex-direction:column;align-items:flex-start}.features-grid{grid-template-columns:repeat(3,1fr)}}.animation-note{font-size:12px;color:var(--chalk-faint);margin:0}
