.portal{max-width:1240px;margin:auto;padding:0 24px 48px}.portal .panel{padding:26px;margin:20px 0}.portal h2{font-size:21px}.portal p{color:#81769d;line-height:1.8}.portal-primary{display:inline-flex;align-items:center;justify-content:center;margin-top:12px;padding:14px 23px;border-radius:14px;background:linear-gradient(120deg,#8970ee,#7896fa);color:white!important;font-weight:700;text-decoration:none;border:0;cursor:pointer}.portal-primary:disabled{opacity:.5;cursor:default}.portal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.portal-card{display:block;padding:28px;background:#ffffffde;border:1px solid #e8defd;border-radius:22px;text-decoration:none;color:#463b69;box-shadow:0 10px 35px #6c55b008;transition:transform .2s,box-shadow .2s}.portal-card:hover{transform:translateY(-3px);box-shadow:0 12px 35px #6c55b019}.portal-card:focus-visible{outline:3px solid #9781ec;outline-offset:3px}.portal-card small{display:block;color:#a194c0;letter-spacing:2px;font-size:10px;margin-top:16px}.portal-card h2{margin:9px 0}.portal-card p{font-size:14px;min-height:76px}.portal-card b{font-size:13px;color:#9274d5}.portal-icon{display:inline-flex;padding:14px;border-radius:16px;background:#f0eaff;color:#9779db}.portal-icon svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.saved-deck{display:flex;align-items:center;justify-content:space-between;gap:16px}.saved-deck p{margin:4px 0}.portal a:not(.portal-card):not(.portal-primary){color:#8d72c9}.portal-note{text-align:center;font-size:12px;margin:30px 0}.stage-options{display:flex;gap:20px;flex-wrap:wrap;align-items:center;margin:22px 0;color:#716187}.stage-options fieldset{border:1px solid #e5ddf5;border-radius:12px;display:flex;gap:16px;padding:14px}.stage-options label{cursor:pointer}.stage-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.stage-actions button{margin-top:0}.stage-assumptions summary{font-weight:700;cursor:pointer;color:#7d65a6}.stage-assumptions p{font-size:13px}.stage-preview{display:flex;gap:8px;overflow:auto;padding:15px 0}.stage-preview img{width:58px;height:58px;object-fit:contain;border:1px solid #e7dffc;border-radius:12px;background:#f7f4ff}.stage-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.stage-summary-grid>div{padding:18px;background:#f4efff;border-radius:14px}.stage-summary-grid strong{display:block;font-size:23px;color:#7760ad;margin-top:7px}.stage-table-wrap{overflow-x:auto}.stage-table{width:100%;border-collapse:collapse;min-width:700px;font-size:13px}.stage-table th,.stage-table td{text-align:left;padding:13px 9px;border-bottom:1px solid #eee7fa}.stage-table th{color:#8b7aa5}.stage-table tr[data-pass="false"]{background:#fff2f5}.stage-table details p{max-width:360px}.stage-tag{padding:4px 8px;border-radius:7px;background:#eee7fc;font-size:11px;white-space:nowrap}.stage-fail{color:#bf708b}.stage-pass{color:#599e94}.stage-report header{display:flex;justify-content:space-between;align-items:center;gap:10px}.stage-report ul{color:#817195;line-height:1.8}.stage-report details{margin-top:14px}.stage-report summary{cursor:pointer;color:#8c70bc}.portal progress{width:100%;height:12px;accent-color:#9678d7}.stage-compare{border-left:4px solid #af99ed;padding-left:18px}.portal button,.portal input{font:inherit}.portal button:focus-visible{outline:3px solid #9982db}.portal .hero-badge{display:flex;flex-direction:column;align-items:center;gap:12px}
@media(max-width:900px){.portal-grid{grid-template-columns:repeat(2,1fr)}.stage-summary-grid{grid-template-columns:1fr 1fr}.portal .hero-badge{display:none}}@media(max-width:560px){.portal{padding:0 14px 32px}.portal-grid{grid-template-columns:1fr;gap:12px}.portal-card{padding:22px}.portal-card p{min-height:0}.portal .panel{padding:19px}.saved-deck{align-items:flex-start;flex-direction:column}.stage-summary-grid{grid-template-columns:1fr}.stage-options{gap:12px}.stage-options fieldset{width:100%;justify-content:space-between}.stage-actions button{width:100%}.stage-report header{align-items:flex-start;flex-direction:column}.portal .hero h1{font-size:34px}}

.stage-altar-side{padding:14px 0;border-top:1px solid #ebe3fa}.stage-altar-side label{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:12px 0;color:#807093}.stage-altar-side select{max-width:65%;padding:9px;border:1px solid #e4daf6;border-radius:10px;background:white;color:#756484}.stage-altar-side input{width:110px;padding:9px;border:1px solid #e4daf6;border-radius:10px}.stage-altar-side p{font-size:12px}

.wall-rules{display:grid;grid-template-columns:1fr;gap:15px}.wall-rules label{display:flex;gap:20px;align-items:center;color:#7d6b96}.wall-rules select{flex:1;min-width:0;padding:12px;border:1px solid #e3d8f8;border-radius:12px;color:#716184;background:#faf8ff}.wall-pool{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.wall-pool label{display:flex;align-items:center;gap:7px;border:1px solid #e8dff8;border-radius:12px;padding:8px;font-size:12px;background:#fcfaff;cursor:pointer}.wall-pool img{width:40px;height:42px;object-fit:contain}.wall-pool small{display:block;color:#a08ab7;margin-top:4px}.wall-board{margin:24px 0;overflow-x:auto;border-radius:18px;background:linear-gradient(#f5f0ffe8,#f5f0ffe8),url('/assets/maps/guild-defense.webp') center bottom/100% auto}.wall-row{padding:12px;min-width:610px}.wall-row>b{display:block;font-size:12px;color:#826e9e;margin-bottom:10px}.wall-tiles{display:grid;grid-template-columns:repeat(7,minmax(78px,1fr));gap:6px}.wall-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;background:#ffffffd9;border:1px solid #dfd3ef;border-radius:12px;min-height:115px;padding:7px 3px}.wall-tile img{width:55px;height:55px;object-fit:contain}.wall-tile small{font-size:10px;color:#8c71ac}.wall-tile select{width:100%;max-width:110px;font-size:11px;padding:6px 0;border:0;border-radius:6px;color:#7b638e;background:#f3edff}.wall-empty{font-size:34px;color:#c3b1d7}.wall-pool input[type=checkbox]{accent-color:#a080d4}.stage-options input[type=number]{width:70px;padding:8px;border:1px solid #e6dbf4;border-radius:9px;background:white}.stage-options select{padding:8px;border:1px solid #e6dbf4;border-radius:9px;color:#7a6895}@media(max-width:850px){.wall-pool{grid-template-columns:repeat(3,1fr)}}@media(max-width:560px){.wall-pool{grid-template-columns:repeat(2,1fr)}.wall-rules label{display:block}.wall-rules select{display:block;width:100%;margin-top:8px}.wall-pool img{width:32px}.wall-pool label{font-size:11px}}
