:root{--portal-bg:#07111f;--portal-panel:#0e1c2d;--portal-panel-2:#13253a;--portal-line:#253b53;--portal-text:#e9f1f8;--portal-muted:#91a6bb;--portal-mint:#38d6ad;--portal-blue:#6ba8ff;--portal-amber:#ffc766;--portal-danger:#ff7d88}
.portal-body{margin:0;background:linear-gradient(155deg,#07111f 0%,#0a1727 55%,#0b1e2d 100%);color:var(--portal-text);font-family:Inter,"Noto Sans TC",system-ui,sans-serif;min-height:100vh}
.portal-nav{height:68px;display:flex;align-items:center;gap:22px;padding:0 28px;border-bottom:1px solid rgba(145,166,187,.18);background:rgba(7,17,31,.93);position:sticky;top:0;z-index:20;backdrop-filter:blur(14px)}
.portal-logo{display:flex;align-items:center;gap:10px;color:var(--portal-text);text-decoration:none;font-weight:850;white-space:nowrap}.portal-logo span:first-child{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--portal-mint);color:#052018}
.portal-links{display:flex;align-items:center;gap:6px;flex:1}.portal-links a{color:var(--portal-muted);text-decoration:none;padding:9px 12px;border-radius:9px;font-size:14px}.portal-links a:hover,.portal-links a.active{background:rgba(56,214,173,.1);color:var(--portal-text)}
.portal-actions{display:flex;gap:9px}.portal-btn{border:1px solid var(--portal-line);border-radius:10px;padding:10px 15px;background:#102238;color:var(--portal-text);text-decoration:none;font:inherit;font-weight:750;cursor:pointer}.portal-btn.primary{background:var(--portal-mint);border-color:var(--portal-mint);color:#042219}.portal-btn:disabled{opacity:.55;cursor:not-allowed}
.portal-main{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:40px 0 84px}.portal-hero{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(320px,.7fr);gap:24px;align-items:stretch;margin-bottom:28px}.portal-hero-copy,.portal-card{background:linear-gradient(145deg,rgba(19,37,58,.96),rgba(11,26,42,.96));border:1px solid var(--portal-line);border-radius:18px;padding:26px;box-shadow:0 18px 50px rgba(0,0,0,.16)}
.portal-kicker{color:var(--portal-mint);text-transform:uppercase;letter-spacing:.14em;font-size:12px;font-weight:850;margin:0 0 10px}.portal-hero h1{font-size:clamp(31px,5vw,55px);line-height:1.05;margin:0 0 16px}.portal-hero p,.portal-card p{color:var(--portal-muted);line-height:1.75}.portal-hero .portal-hero-copy>p{max-width:720px}
.portal-badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.portal-badge{padding:7px 10px;border-radius:999px;background:rgba(107,168,255,.1);border:1px solid rgba(107,168,255,.25);color:#bfd7ff;font-size:12px}
.portal-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:16px 0}.portal-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.portal-card h2,.portal-card h3{margin:0 0 10px}.portal-card h3{font-size:18px}.portal-card strong.metric{display:block;font-size:29px;margin:9px 0}.portal-card small{color:var(--portal-muted)}
.portal-section{margin:34px 0}.portal-section-head{display:flex;justify-content:space-between;gap:18px;align-items:end;margin:0 0 16px}.portal-section-head h2{margin:0;font-size:27px}.portal-section-head p{color:var(--portal-muted);margin:4px 0 0}
.portal-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.portal-list li{padding:12px 14px;border-radius:11px;background:rgba(145,166,187,.07);border:1px solid rgba(145,166,187,.13);line-height:1.55}.portal-list b{color:var(--portal-text)}
.policy-safe{border-left:3px solid var(--portal-mint)}.policy-block{border-left:3px solid var(--portal-danger)}.policy-note{padding:16px 18px;border-radius:12px;background:rgba(255,199,102,.08);border:1px solid rgba(255,199,102,.25);color:#f9ddb0;line-height:1.65}
.portal-table{width:100%;border-collapse:collapse;font-size:14px}.portal-table th,.portal-table td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--portal-line);vertical-align:top}.portal-table th{color:var(--portal-muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--portal-mint);margin-right:7px}.status-dot.waiting{background:var(--portal-amber)}
.portal-form{display:grid;gap:14px}.portal-form label{display:grid;gap:7px;color:var(--portal-muted);font-size:13px}.portal-form input,.portal-form textarea,.portal-form select{width:100%;box-sizing:border-box;border-radius:10px;border:1px solid var(--portal-line);background:#091827;color:var(--portal-text);padding:11px 12px;font:inherit}.portal-form textarea{min-height:110px;resize:vertical}.portal-message{padding:12px 14px;border-radius:10px;background:rgba(107,168,255,.09);color:#cbe0ff;min-height:18px}.portal-empty{color:var(--portal-muted);padding:20px;text-align:center}.portal-footer{border-top:1px solid var(--portal-line);color:var(--portal-muted);padding:28px;text-align:center;font-size:13px}
.coach-report{display:grid;gap:13px}.coach-report section{padding:14px;border-radius:12px;background:rgba(145,166,187,.06)}.coach-report h4{margin:0 0 8px;color:var(--portal-blue)}.coach-report ul{margin:0;padding-left:20px;line-height:1.65}.report-status{font-size:12px;border-radius:999px;padding:5px 9px;background:rgba(56,214,173,.1);color:#9ef1d9}
.market-number{font-size:48px;font-weight:850;letter-spacing:-.04em;margin:6px 0}.market-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.market-meta div{padding:12px;border-radius:11px;background:rgba(145,166,187,.07)}.market-meta span{display:block;color:var(--portal-muted);font-size:12px}.market-meta b{font-size:18px}.market-meta #publicWindow{font-size:12px;line-height:1.35;overflow-wrap:anywhere}.portal-chart{height:290px;position:relative}.portal-chart canvas{width:100%;height:100%}
.data-source-card{display:flex;flex-direction:column;color:inherit;text-decoration:none;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.data-source-card:hover{transform:translateY(-3px);border-color:var(--portal-blue);box-shadow:0 20px 48px rgba(0,0,0,.22)}.data-source-card p{flex:1}.data-source-card-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px}.data-source-enter{color:var(--portal-blue);font-weight:800;font-size:13px}.data-source-back{display:inline-flex;color:var(--portal-blue);text-decoration:none;font-weight:800;margin:0 0 18px}.data-source-filters{margin:24px 0}.data-source-filters .portal-form{grid-template-columns:minmax(0,1fr) auto;align-items:end}.data-source-date-fields{display:grid;grid-template-columns:repeat(2,minmax(160px,1fr));gap:12px}.data-source-table-card{margin:18px 0}.data-source-table-wrap{overflow:auto;max-height:680px}.data-source-table-wrap .portal-table{min-width:840px}.data-source-table-wrap th{position:sticky;top:0;background:var(--portal-panel);z-index:1}.data-source-pagination{display:flex;justify-content:center;align-items:center;gap:18px;margin-top:20px;color:var(--portal-muted)}.data-source-login{display:inline-flex;margin-left:8px;padding:7px 12px}
@media(max-width:900px){.portal-nav{height:auto;min-height:64px;flex-wrap:wrap;padding:12px 16px}.portal-actions{margin-left:auto}.portal-links{order:3;flex:0 0 100%;width:100%;overflow:auto}.portal-links a{white-space:nowrap}.portal-hero{grid-template-columns:1fr}.portal-grid,.portal-grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.portal-main{width:min(100% - 20px,1180px);padding-top:22px}.portal-actions .portal-btn:not(.primary){display:none}.portal-grid,.portal-grid.two,.portal-grid.four{grid-template-columns:1fr}.portal-hero-copy,.portal-card{padding:19px}.market-meta{grid-template-columns:1fr}.portal-section-head{align-items:start;flex-direction:column}.data-source-filters .portal-form{grid-template-columns:1fr}.data-source-date-fields{grid-template-columns:1fr}.data-source-card-footer{align-items:flex-start;flex-direction:column}}
