:root{--bg-base:#0a0a12;--bg-surface:#111120;--bg-card:#15152a;--bg-hover:#1e1e35;--bg-input:#0e0e1e;--border:#32325a;--border-bright:#4a4a72;--text-primary:#f5f5ff;--text-secondary:#d0d0f0;--text-muted:#ababcc;--gold:#d4aa2a;--gold-dim:#8a6e1e;--gold-bright:#f0c840;--army-clr:#eef;--army-bg:#0f2d58;--army-border:#2563eb;--detach-clr:#eef;--detach-bg:#27104a;--detach-border:#8b5cf6;--enhance-clr:#eef;--enhance-bg:#3a1e00;--enhance-border:#f59e0b;--leader-clr:#eef;--leader-bg:#063530;--leader-border:#14b8a6;--success:#22c55e;--danger:#f87171;--warning:#fbbf24;--faction:#c9a227}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg-base);color:var(--text-primary);font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.5;min-height:100vh;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-base)}::-webkit-scrollbar-thumb{background:var(--border-bright);border-radius:3px}h1{font-size:1.8rem;font-weight:700;letter-spacing:.03em}h2{font-size:1.3rem}h2,h3{font-weight:600}h3{font-size:1.1rem}h4{font-size:.95rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em}p{color:var(--text-secondary)}a{color:var(--gold);text-decoration:none}a:hover{color:var(--gold-bright)}.app-shell{display:flex;flex-direction:column;height:100vh}.app-content{flex:1 1;overflow:auto}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:100;background:var(--bg-surface);border-bottom:1px solid var(--border);padding:0 1rem;height:52px;display:flex;align-items:center;gap:.75rem}.nav-logo{font-size:1.25rem;font-weight:800;color:var(--gold);letter-spacing:.05em;white-space:nowrap}.nav-sep{color:var(--border-bright)}.nav-army{font-size:.85rem;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1}.nav-army strong{color:var(--text-primary)}.nav-turn{margin-left:auto;font-size:.8rem;background:var(--bg-card);border:1px solid var(--border);border-radius:6px;padding:.25rem .6rem;white-space:nowrap;color:var(--text-secondary)}.nav-turn strong{color:var(--gold)}.nav-btn{margin-left:.25rem;background:none;border:1px solid var(--border);color:var(--text-secondary);border-radius:6px;padding:.3rem .7rem;font-size:.8rem;cursor:pointer;white-space:nowrap;transition:all .15s}.nav-btn:hover{border-color:var(--gold);color:var(--gold)}.nav-user{margin-left:auto;display:flex;align-items:center;gap:.5rem}.nav-username{font-size:.8rem;color:var(--text-muted);white-space:nowrap}.nav-btn-signout{margin-left:0}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.1rem;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;border:none;transition:all .15s;white-space:nowrap}.btn-primary{background:var(--gold);color:#000}.btn-primary:hover{background:var(--gold-bright)}.btn-secondary{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-bright)}.btn-secondary:hover{border-color:var(--gold);color:var(--gold)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#ef4444}.btn-ghost{background:none;color:var(--text-secondary);border:1px solid var(--border);padding:.35rem .75rem;font-size:.8rem}.btn-ghost:hover{border-color:var(--gold-dim);color:var(--gold)}.btn-sm{padding:.3rem .65rem;font-size:.8rem}.btn-lg{padding:.75rem 1.6rem;font-size:1rem}.btn-full{width:100%;justify-content:center}.btn:disabled{opacity:.4;cursor:not-allowed}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:1rem}.card:hover{border-color:var(--border-bright)}.card-faction{cursor:pointer;transition:all .15s}.card-faction:hover{border-color:var(--faction);box-shadow:0 0 0 1px var(--faction)}.card-faction.selected{border-color:var(--faction);box-shadow:0 0 0 2px var(--faction);background:color-mix(in srgb,var(--faction) 8%,var(--bg-card))}input[type=password],input[type=text],select,textarea{background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-size:.9rem;padding:.5rem .75rem;width:100%;outline:none;transition:border-color .15s}input[type=password]:focus,input[type=text]:focus,select:focus,textarea:focus{border-color:var(--gold-dim)}select option{background:var(--bg-card)}.tag{display:inline-block;padding:.15rem .45rem;border-radius:4px;font-size:.72rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.tag-keyword{background:var(--bg-hover);color:var(--text-secondary);border:1px solid var(--border)}.tag-ability{background:#1e1a06;color:#d4b84a;border:1px solid #4a3e0a}.tag-army{background:var(--army-bg);color:var(--army-clr);border:1px solid var(--army-border)}.tag-detach{background:var(--detach-bg);color:var(--detach-clr);border:1px solid var(--detach-border)}.tag-enhance{background:var(--enhance-bg);color:var(--enhance-clr);border:1px solid var(--enhance-border)}.tag-leader{background:var(--leader-bg);color:var(--leader-clr);border:1px solid var(--leader-border)}.stat-row{display:flex;gap:.5rem;flex-wrap:wrap}.stat-cell{display:flex;flex-direction:column;align-items:center;background:var(--bg-hover);border:1px solid var(--border);border-radius:6px;padding:.3rem .6rem;min-width:46px}.stat-cell .stat-label{font-size:.68rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.stat-cell .stat-value{font-size:1rem;font-weight:700;color:var(--text-primary)}.stat-cell.invuln .stat-value{color:#fbbf24}.weapons-table{width:100%;border-collapse:collapse;font-size:.82rem}.weapons-table th{text-align:left;padding:.3rem .5rem;color:var(--text-muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.weapons-table td,.weapons-table th{border-bottom:1px solid var(--border)}.weapons-table td{padding:.35rem .5rem;vertical-align:top}.weapons-table tr:last-child td{border-bottom:none}.weapon-name{font-weight:600;color:var(--text-primary)}.weapon-abilities{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.2rem}.bonus-section{border-radius:8px;overflow:hidden;border:1px solid}.bonus-section-header{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em}.bonus-section-body{padding:.75rem;font-size:.85rem}.bonus-section-body p{color:var(--text-primary);margin-bottom:.4rem}.bonus-section-body p:last-child{margin-bottom:0}.bonus-section.army{border-color:var(--army-border)}.bonus-section.army .bonus-section-header{background:var(--army-bg);color:var(--army-clr)}.bonus-section.army .bonus-section-body{background:color-mix(in srgb,var(--army-bg) 60%,transparent)}.bonus-section.detach{border-color:var(--detach-border)}.bonus-section.detach .bonus-section-header{background:var(--detach-bg);color:var(--detach-clr)}.bonus-section.detach .bonus-section-body{background:color-mix(in srgb,var(--detach-bg) 60%,transparent)}.bonus-section.enhance{border-color:var(--enhance-border)}.bonus-section.enhance .bonus-section-header{background:var(--enhance-bg);color:var(--enhance-clr)}.bonus-section.enhance .bonus-section-body{background:color-mix(in srgb,var(--enhance-bg) 60%,transparent)}.bonus-section.leader{border-color:var(--leader-border)}.bonus-section.leader .bonus-section-header{background:var(--leader-bg);color:var(--leader-clr)}.bonus-section.leader .bonus-section-body{background:color-mix(in srgb,var(--leader-bg) 60%,transparent)}.bonus-option{background:var(--bg-card);border:1px solid var(--border);border-radius:6px;padding:.5rem .75rem;margin-bottom:.5rem}.bonus-option:last-child{margin-bottom:0}.bonus-option-name{font-weight:700;font-size:.82rem;margin-bottom:.15rem}.bonus-option-desc{font-size:.82rem;color:var(--text-secondary)}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:200;display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;padding:.5rem}.modal{background:var(--bg-surface);border:1px solid var(--border-bright);border-radius:12px;width:100%;max-width:680px;margin:.5rem auto;position:relative}.modal-header{padding:1rem 1rem .75rem;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.modal-body{padding:.75rem 1rem;display:flex;flex-direction:column;gap:.75rem}.modal-close{background:none;border:1px solid var(--border);color:var(--text-secondary);border-radius:6px;width:32px;height:32px;cursor:pointer;font-size:1.1rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}.modal-close:hover{border-color:var(--danger);color:var(--danger)}.home-view{max-width:700px;margin:0 auto;padding:2rem 1rem}.home-title{font-size:3rem;font-weight:900;color:var(--gold);letter-spacing:.06em}.home-sub{color:var(--text-secondary);margin-top:.25rem;font-size:1.05rem}.home-actions{display:flex;flex-direction:column;gap:.75rem;margin-top:1.5rem}.home-actions-row{display:flex;gap:.75rem;flex-wrap:wrap}@media (max-width:600px){.home-actions{gap:.5rem}.home-actions-row{flex-direction:column;gap:.5rem}.home-actions-row+.home-actions-row{margin-top:.75rem}.home-actions-row .btn{width:100%;justify-content:center;text-align:center}}.feature-list{display:grid;grid-template-columns:1fr 1fr;grid-gap:.5rem;gap:.5rem;margin-top:1.5rem}.feature-item{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:.6rem .8rem;font-size:.85rem;color:var(--text-secondary)}.feature-item strong{color:var(--text-primary);display:block;margin-bottom:.1rem}.coming-soon-banner{text-align:center;margin:2rem 0 1.5rem}.coming-soon-text{font-size:2rem;font-weight:800;color:var(--text-primary);letter-spacing:.04em}.coming-soon-sub{color:var(--text-secondary);margin-top:.4rem}.coming-soon-admin-link{display:block;margin:2rem auto 0;background:none;border:none;color:var(--text-muted,var(--text-secondary));font-size:.75rem;opacity:.35;cursor:pointer;padding:.25rem .5rem}.coming-soon-admin-link:hover{opacity:.7}.login-view{max-width:480px;margin:0 auto;padding:2rem 1rem}.login-card{margin-top:2rem;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.login-tabs{display:flex;border-bottom:1px solid var(--border)}.login-tab{flex:1 1;padding:.75rem 1rem;background:none;border:none;color:var(--text-secondary);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .15s}.login-tab:hover{color:var(--text-primary);background:var(--bg-hover)}.login-tab.active{color:var(--gold);background:color-mix(in srgb,var(--gold) 8%,var(--bg-card));border-bottom:2px solid var(--gold)}.login-form{padding:1.5rem;gap:1rem}.login-field,.login-form{display:flex;flex-direction:column}.login-field{gap:.35rem}.login-field label{font-size:.8rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.login-password-wrap{position:relative;display:flex}.login-password-wrap input{flex:1 1;padding-right:3.5rem}.login-password-toggle{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--text-secondary);font-size:.75rem;font-weight:600;cursor:pointer;padding:.2rem .3rem;text-transform:uppercase;letter-spacing:.04em}.login-password-toggle:hover{color:var(--text-primary)}.login-error{color:var(--danger);font-size:.85rem;margin:0}.saved-armies{margin-top:2rem}.saved-armies h3{margin-bottom:0}.section-header{display:flex;align-items:center;justify-content:space-between;cursor:pointer;padding:.25rem 0;margin-bottom:.75rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.section-header:hover h3{color:var(--gold)}.section-chevron{font-size:.75rem;color:var(--text-muted)}.army-card{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:.75rem 1rem;display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem;cursor:pointer;transition:border-color .15s}.army-card:hover{border-color:var(--faction)}.army-card-info{flex:1 1;min-width:0}.army-card-name{font-weight:700}.army-card-meta{font-size:.8rem;color:var(--text-muted)}.setup-view{max-width:860px;margin:0 auto;padding:1.5rem 1rem}.faction-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:.75rem;gap:.75rem;margin-top:1rem}.faction-card-name{font-size:1.1rem;font-weight:700}.faction-card-short{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.faction-card-desc{font-size:.8rem;color:var(--text-secondary);margin-top:.4rem;line-height:1.4}.faction-coming-soon{opacity:.45}.detachment-list{display:flex;flex-direction:column;gap:.75rem;margin-top:1rem;padding-bottom:5.5rem}.setup-footer{position:fixed;bottom:0;left:0;right:0;background:var(--bg-base);border-top:1px solid var(--border);padding:.75rem 1rem;z-index:50}.setup-footer-inner{max-width:860px;margin:0 auto;display:flex;flex-direction:column;gap:.5rem}@media (min-width:520px){.setup-footer-inner{flex-direction:row;justify-content:space-between;align-items:center}}.detachment-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:1rem;cursor:pointer;transition:all .15s}.detachment-card.selected,.detachment-card:hover{border-color:var(--faction)}.detachment-card.selected{box-shadow:0 0 0 2px var(--faction)}.detachment-card-name{font-size:1rem;font-weight:700;margin-bottom:.25rem}.detachment-card-desc{font-size:.82rem;color:var(--text-secondary);margin-bottom:.6rem}.detachment-card-rule{font-size:.82rem}.detachment-card-rule strong{color:var(--faction-fg,var(--faction))}.enhancements-preview{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}.builder-view{display:flex;flex-direction:column;height:calc(100vh - 52px);overflow:hidden}.builder-panels{display:grid;grid-template-columns:1fr 1fr;flex:1 1;overflow:hidden}.builder-top-bar{background:var(--bg-surface);border-bottom:1px solid var(--border);padding:.4rem 1rem;display:flex;align-items:center;justify-content:center;gap:.5rem;font-size:.9rem;position:relative;flex-shrink:0;overflow:hidden}.builder-panel{overflow-y:auto;padding:1rem;border-right:1px solid var(--border)}.builder-panel:last-child{border-right:none}.builder-panel-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:.75rem;padding-bottom:.4rem;border-bottom:1px solid var(--border)}.role-group{margin-bottom:.5rem;border:1px solid var(--border);border-radius:8px;overflow:hidden}.role-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);padding:.35rem .6rem;background:var(--bg-hover);border-bottom:1px solid var(--border)}.role-group:has(.role-label:only-child) .role-label{border-bottom:none}.role-group>.unit-row{border-radius:0;border-top:1px solid var(--border)}.role-group>.unit-row:first-of-type{border-top:none}.unit-row{display:flex;align-items:center;gap:.5rem;padding:.45rem .6rem;border-radius:6px;cursor:pointer;transition:background .1s}.unit-row:hover{background:var(--bg-hover)}.unit-row-name{font-size:.9rem;font-weight:600;flex:1 1}.unit-row-pts{font-size:.78rem;color:var(--text-muted);white-space:nowrap}.unit-row-stats{font-size:.72rem;color:var(--text-muted)}.army-unit-card{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:.65rem .8rem;margin-bottom:.5rem;cursor:pointer;transition:border-color .15s}.army-unit-card:hover{border-color:var(--faction)}.army-unit-top{display:flex;align-items:center;gap:.5rem}.army-unit-name{font-weight:700;flex:1 1;font-size:.95rem}.army-unit-pts{font-size:.8rem;color:var(--gold);font-weight:700}.army-unit-controls{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.5rem}.army-unit-controls select{font-size:.78rem;padding:.25rem .5rem;flex:1 1;min-width:120px}.army-total{position:-webkit-sticky;position:sticky;bottom:0;background:var(--bg-surface);border-top:1px solid var(--border);padding:.75rem;margin:0 -1rem -1rem;display:flex;align-items:center;justify-content:space-between}.army-total-pts{font-size:1rem;font-weight:700}.army-total-pts span{color:var(--gold)}.ds-title{font-size:1.2rem;font-weight:800;letter-spacing:.02em}.ds-faction{font-size:.78rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.ds-meta{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;margin-top:.3rem}.ds-section-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:.4rem}.ability-item{background:var(--bg-hover);border-radius:6px;padding:.45rem .6rem;margin-bottom:.35rem;font-size:.83rem}.ability-item:last-child{margin-bottom:0}.ability-name{font-weight:700;color:var(--text-primary)}.ability-desc{color:var(--text-secondary);margin-top:.1rem}.ability-list{margin:.35rem 0 0;padding-left:1.1rem;list-style:disc}.ability-list li+li{margin-top:.25rem}.leader-stats{background:var(--bg-card);border:1px solid var(--border);border-radius:6px;padding:.6rem;margin-top:.5rem}.battle-wizard{display:flex;flex-direction:column;max-width:600px;margin:0 auto}.battle-wizard-steps{display:flex;padding:1rem 1rem .75rem;border-bottom:1px solid var(--border)}.battle-wizard-step{display:flex;align-items:center;gap:.4rem;flex:1 1;font-size:.8rem;color:var(--text-muted)}.battle-wizard-step.active{color:var(--text-primary)}.battle-wizard-step.done{color:var(--success)}.battle-wizard-step-num{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-size:.75rem;font-weight:700;background:var(--bg-card);border:1px solid var(--border);flex-shrink:0}.battle-wizard-step.active .battle-wizard-step-num{background:var(--gold);border-color:var(--gold);color:#000}.battle-wizard-step.done .battle-wizard-step-num{background:var(--success);border-color:var(--success);color:#000}.battle-wizard-body{padding:1.25rem 1rem 6rem}.battle-wizard-title{font-size:1.2rem;font-weight:700;margin-bottom:1rem}.battle-wizard-list{display:flex;flex-direction:column;gap:.5rem}.battle-wizard-card{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:.65rem .9rem;cursor:pointer;transition:border-color .15s,background .15s}.battle-wizard-card:hover{border-color:var(--border-bright);background:var(--bg-hover)}.battle-wizard-card.selected{border-color:var(--gold);background:var(--bg-hover)}.battle-wizard-card-name{font-weight:600;font-size:.95rem}.battle-wizard-card-meta{font-size:.78rem;color:var(--text-muted);margin-top:.15rem}.battle-wizard-tabs{display:flex;gap:.5rem;margin-bottom:.75rem}.battle-wizard-tab{padding:.4rem .9rem;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);font-size:.85rem;cursor:pointer;transition:border-color .15s,background .15s,color .15s}.battle-wizard-tab:hover{border-color:var(--border-bright);color:var(--text-primary)}.battle-wizard-tab.active{border-color:var(--gold);background:rgba(212,170,42,.12);color:var(--gold);font-weight:600}.battle-wizard-input{width:100%;box-sizing:border-box;padding:.5rem .75rem;border-radius:6px;border:1px solid var(--border);background:var(--bg-input,var(--bg-card));color:var(--text-primary);font-size:.9rem}.battle-wizard-input:focus{outline:none;border-color:var(--gold)}.battle-wizard-selected-opponent{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border:1px solid var(--gold);border-radius:8px;background:var(--bg-hover)}.battle-wizard-footer{position:fixed;bottom:0;left:0;right:0;background:var(--bg-base);border-top:1px solid var(--border);padding:.75rem 1rem;z-index:50}.battle-wizard-footer-inner{max-width:600px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:.5rem}.game-view{max-width:700px;margin:0 auto;padding:.75rem 1rem}.game-header-row .btn{padding:.55rem 1.1rem;font-size:.95rem}.game-header-row .btn-primary{min-width:160px;justify-content:center}.game-header-row .game-phase-badge{width:172px;box-sizing:border-box;overflow:hidden}.game-view .phase-nav{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:.4rem;gap:.4rem}.game-view .phase-btn{padding:.45rem .4rem;font-size:.85rem;text-align:center;white-space:nowrap}.game-view .score-card .counter-btn{width:36px;height:36px;font-size:1.1rem}.game-header{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.game-header-row{display:flex;align-items:center;justify-content:space-between}.game-turn-badge{background:var(--bg-card);border:1px solid var(--gold-dim);border-radius:8px;padding:.4rem .9rem;font-weight:700;font-size:1rem}.game-phase-badge{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:.35rem .75rem;font-size:.82rem;color:var(--text-secondary)}.scores-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:.75rem;gap:.75rem;margin-bottom:1rem}.score-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:.75rem}.score-card-name{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-value-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}.score-label{font-size:.75rem;color:var(--text-muted);width:28px;flex-shrink:0}.score-value{font-size:1.4rem;font-weight:800;flex:1 1}.score-value.cp{color:var(--gold)}.score-value.vp{color:#7ec8fb}.counter-btns{display:flex;gap:.3rem}.counter-btn{background:var(--bg-hover);border:1px solid var(--border);color:var(--text-primary);border-radius:5px;width:28px;height:28px;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:all .1s}.counter-btn:hover{border-color:var(--gold);color:var(--gold)}.objectives-grid{display:grid;grid-template-columns:repeat(5,1fr);grid-gap:.5rem;gap:.5rem;margin-bottom:1rem}.obj-card{background:var(--bg-card);border:2px solid var(--border);border-radius:8px;padding:.5rem .3rem;text-align:center;cursor:pointer;transition:all .15s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.obj-card.p1{border-color:var(--success);background:color-mix(in srgb,var(--success) 12%,var(--bg-card))}.obj-card.p2{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,var(--bg-card))}.obj-card.cont{border-color:var(--warning);background:color-mix(in srgb,var(--warning) 12%,var(--bg-card))}.obj-number{font-size:.7rem;color:var(--text-muted)}.obj-status{font-size:.72rem;font-weight:700;margin-top:.2rem;min-height:1em}.obj-card.p1 .obj-status{color:var(--success)}.obj-card.p2 .obj-status{color:var(--danger)}.obj-card.cont .obj-status{color:var(--warning)}.phase-nav{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1rem}.phase-btn{background:var(--bg-card);border:1px solid var(--border);color:var(--text-muted);border-radius:6px;padding:.3rem .6rem;font-size:.78rem;cursor:pointer;transition:all .15s}.phase-btn.active{background:var(--gold-dim);border-color:var(--gold);color:var(--text-primary);font-weight:700}.phase-btn:hover{border-color:var(--border-bright);color:var(--text-primary)}.log-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;max-height:180px;overflow-y:auto;padding:.5rem;margin-bottom:1rem;font-size:.8rem}.log-entry{padding:.2rem 0;border-bottom:1px solid var(--border);color:var(--text-secondary)}.log-entry:last-child{border-bottom:none}.log-entry strong{color:var(--text-muted);font-size:.72rem}.secondary-list{margin-bottom:1rem}.secondary-item{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:.6rem .75rem;margin-bottom:.4rem;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.secondary-name{flex:1 1;font-size:.85rem;font-weight:600;min-width:120px}.secondary-score{display:flex;align-items:center;gap:.4rem}.secondary-pts{font-size:.9rem;font-weight:700;color:#7ec8fb}.secondary-max{font-size:.78rem;color:var(--text-muted)}.progress-bar{height:4px;background:var(--bg-hover);border-radius:2px;margin-top:.3rem;overflow:hidden}.progress-bar-fill{height:100%;background:#7ec8fb;border-radius:2px;transition:width .2s}.divider{border:none;border-top:1px solid var(--border);margin:.5rem 0}.loading{padding:2rem;font-size:.9rem}.empty,.loading{color:var(--text-muted);text-align:center}.empty{padding:1rem;font-size:.85rem}@media (max-width:640px){body{font-size:14px}h1{font-size:1.5rem}.builder-view{height:auto;overflow:visible}.builder-panels{grid-template-columns:1fr;overflow:visible}.builder-panel{overflow:visible;border-right:none;border-bottom:1px solid var(--border);padding:.75rem;max-height:45vh;overflow-y:auto}.builder-panel:last-child{border-bottom:none;max-height:none}.objectives-grid{grid-template-columns:repeat(5,1fr);gap:.3rem}.obj-card{padding:.4rem .2rem}.scores-grid{grid-template-columns:1fr 1fr;gap:.5rem}.score-card{padding:.5rem}.score-value-row{gap:.3rem;margin-bottom:.3rem}.score-value{font-size:1.2rem}.counter-btn{width:24px;height:24px;font-size:.9rem}.feature-list{grid-template-columns:1fr}.modal-overlay{padding:0;align-items:flex-end}.modal{border-radius:12px 12px 0 0;margin:0;max-height:90vh;overflow-y:auto;width:100%}.faction-grid{grid-template-columns:1fr 1fr}.home-title{font-size:2.2rem}.nav{padding:0 .75rem;gap:.5rem;overflow:hidden}.nav-logo{font-size:1.1rem}.nav-army,.nav-sep,.nav-username{display:none}}.leave-confirm-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:1000}.leave-confirm-dialog{background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;padding:2rem;max-width:360px;width:90%;text-align:center}.leave-confirm-dialog h2{margin:0 0 .5rem;font-size:1.25rem;color:var(--text-primary)}.leave-confirm-dialog p{margin:0 0 1.5rem;color:var(--text-secondary);font-size:.9rem}.leave-confirm-actions{display:flex;gap:.75rem;justify-content:center}.leave-confirm-actions .btn-secondary{flex:1 1}.leave-confirm-actions .btn-danger{flex:1 1;background:#c0392b;color:#fff;border:none;border-radius:6px;padding:.5rem 1rem;cursor:pointer;font-size:.9rem;font-weight:600}.export-format-btns{display:flex;flex-direction:column;gap:.5rem}.leave-confirm-actions .btn-danger:hover{background:#a93226}