.portal-steps{list-style:none;margin:24px 0 0;padding:0}.portal-steps>li{display:flex;gap:16px;padding-bottom:24px;position:relative}.portal-steps>li:not(:last-child):before{content:"";position:absolute;left:15px;top:34px;bottom:4px;width:1.5px;background:var(--line)}.portal-step-n{flex:none;width:31px;height:31px;border-radius:50%;display:grid;place-items:center;position:relative;z-index:1;background:var(--blue-deep);color:#fff;font-family:var(--font-body);font-size:.86rem;font-weight:650}.portal-steps h3{margin:4px 0 .3em;font-size:1.05rem}.portal-steps p{margin:0;color:var(--ink-soft);font-size:.97rem}.portal-gate{display:grid;gap:8px;margin-top:24px}.portal-gate label{font-size:.9rem;font-weight:600;color:var(--ink)}.portal-gate input{font:inherit;padding:12px 16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-0);color:var(--ink);min-height:48px;letter-spacing:.08em}.portal-gate input:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-color:var(--blue)}.portal-gate button{justify-self:start;margin-top:6px}.portal-gate-error{margin:0;font-size:.9rem;color:#9a3412}.portal-alt{margin-top:24px;border-top:1px solid var(--line);padding-top:16px}.portal-alt summary{cursor:pointer;font-size:.9rem;color:var(--ink-soft);list-style:none}.portal-alt summary::-webkit-details-marker{display:none}.portal-alt summary:before{content:"＋ ";color:var(--blue-deep)}.portal-alt[open] summary:before{content:"－ "}.portal-alt summary:hover{color:var(--blue-deep)}.portal-gate textarea{font:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92rem;line-height:1.6;padding:12px 16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-0);color:var(--ink);resize:vertical;min-height:180px}.portal-gate textarea:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-color:var(--blue)}.signin-google{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;margin-top:24px;padding:12px 20px;min-height:48px;background:var(--surface-0);border-color:var(--line);color:var(--ink);font-weight:600}.signin-google:hover{border-color:var(--blue);background:var(--blue-ghost)}.signin-or{display:flex;align-items:center;gap:16px;margin:20px 0 4px;color:var(--ink-faint);font-size:.85rem}.signin-or:after,.signin-or:before{content:"";flex:1 1;height:1px;background:var(--line)}.signin-setup{margin:20px 0 0;padding:12px 16px;font-size:.86rem;line-height:1.5;color:var(--ink-soft);background:var(--surface-1);border:1px solid var(--line);border-radius:var(--radius-sm)}.signin-setup code{font-size:.92em;background:var(--blue-ghost);padding:1px 5px;border-radius:4px}.admin-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap}.admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-top:24px}.admin-stats>div{background:var(--surface-0);padding:16px;display:grid;gap:2px}.admin-stats strong{font-family:var(--font-display);font-size:1.6rem;line-height:1;color:var(--ink)}.admin-stats span{font-size:.82rem;color:var(--ink-faint)}.admin-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-0);margin-top:16px}.admin-table{width:100%;border-collapse:collapse;font-size:.92rem}.admin-table th{text-align:left;font-family:var(--font-body);font-weight:600;font-size:.78rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint);padding:11px 16px;background:var(--surface-1);white-space:nowrap}.admin-table td,.admin-table th{border-bottom:1px solid var(--line)}.admin-table td{padding:9px 16px;vertical-align:middle}.admin-table tr:last-child td{border-bottom:0}.admin-table tr.is-muted td{background:var(--surface-1);color:var(--ink-faint)}.admin-email{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86rem}.admin-date{white-space:nowrap;color:var(--ink-faint);font-size:.86rem}.admin-terms{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}.admin-terms li{display:inline-flex;align-items:center;gap:8px;padding:5px 10px;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface-0);font-size:.9rem}.admin-terms li span{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:.8rem;color:var(--ink-faint);border-left:1px solid var(--line);padding-left:8px}.admin-add-row input,.admin-add-row select,.admin-table input,.admin-table select{font:inherit;font-size:.92rem;padding:8px 10px;min-height:40px;width:100%;border:1px solid var(--line);border-radius:var(--radius-xs);background:var(--surface-0);color:var(--ink)}.admin-add-row input:focus-visible,.admin-add-row select:focus-visible,.admin-table input:focus-visible,.admin-table select:focus-visible{outline:2px solid var(--focus);outline-offset:1px;border-color:var(--blue)}.admin-actions form{display:flex;gap:6px}.admin-btn{font:inherit;font-size:.86rem;font-weight:600;cursor:pointer;padding:8px 12px;min-height:40px;white-space:nowrap;background:var(--surface-1);color:var(--ink-soft);border:1px solid var(--line);border-radius:var(--radius-xs);transition:border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.admin-btn:hover{border-color:var(--blue);color:var(--blue-deep)}.admin-btn--danger:hover{border-color:#b4472f;color:#9a3412;background:#fdf3f0}.admin-add{margin-top:20px;padding:16px 20px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-1)}.admin-add h3{margin:0 0 12px;font-size:1.02rem}.admin-add-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.admin-add-row input,.admin-add-row select{flex:1 1 170px;width:auto}.admin-add-row .btn{flex:none}.admin-panel{margin-top:16px;padding:16px 20px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-0)}.admin-panel code{font-size:.9em;background:var(--blue-ghost);padding:1px 5px;border-radius:4px}.admin-empty{margin-top:16px;padding:24px;text-align:center;color:var(--ink-faint);border:1px dashed var(--line);border-radius:var(--radius);background:var(--surface-1)}.admin-meta{margin-top:12px;font-size:.85rem;color:var(--ink-faint)}@media (max-width:860px){.admin-table-wrap{border:0;background:none}.admin-table,.admin-table tbody,.admin-table td,.admin-table tr{display:block;width:100%}.admin-table thead{display:none}.admin-table tr{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-0);padding:6px 4px;margin-bottom:12px}.admin-table td{border-bottom:0;display:grid;grid-template-columns:6.5rem 1fr;gap:10px;align-items:center;padding:7px 12px}.admin-table td:before{content:attr(data-label);font-size:.76rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);font-weight:600}.admin-table td.admin-actions{grid-template-columns:1fr}.admin-table td.admin-actions:before{display:none}.admin-actions form{padding-top:4px}}.kpi-week{font-weight:400;color:var(--ink-faint);font-size:.9rem}.kpi-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-top:12px}.kpi-tile{background:var(--surface-0);padding:14px;display:grid;gap:4px;align-content:start}.kpi-label{font-size:.82rem;color:var(--ink-soft);font-weight:600}.kpi-value{font-family:var(--font-display);font-size:1.6rem;line-height:1.1;color:var(--ink)}.kpi-mark{font-size:.9rem}.kpi-mark--up{color:var(--blue-deep)}.kpi-mark--down{color:var(--clay-deep)}.kpi-note{font-size:.78rem;color:var(--ink-faint);line-height:1.4}