:root{--bg: oklch(.99 .002 240);--fg: oklch(.25 .01 240);--muted: oklch(.55 .01 240);--card: oklch(1 0 0);--card-border: oklch(.9 .005 240);--primary: oklch(.42 .08 210);--primary-fg: oklch(.98 0 0);--accent: oklch(.54 .12 160);--accent-soft: oklch(.54 .12 160 / .1);--surface-soft: oklch(.97 .003 240);--shadow: 0 1px 3px rgba(0,0,0,.06), 0 8px 24px rgba(0,0,0,.04);--shadow-lg: 0 4px 12px rgba(0,0,0,.08), 0 20px 48px rgba(0,0,0,.06);--radius: 8px;--radius-lg: 10px}*{box-sizing:border-box;margin:0}html,body{min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#eef7f9,#fbfcfd)}.login-card{width:min(440px,calc(100vw - 32px));padding:40px 32px;border-radius:var(--radius-lg);border:1px solid var(--card-border);background:var(--card);box-shadow:var(--shadow-lg);display:grid;gap:20px;text-align:center}.login-card h1{font-size:28px;font-weight:700;letter-spacing:-.03em;color:var(--fg)}.login-card p{color:var(--muted);font-size:15px;line-height:1.6}.login-error{color:#c53637;font-size:14px;padding:10px 14px;border-radius:8px;background:#c536370f;border:1px solid oklch(.55 .18 25 / .15)}.login-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;border-radius:8px;border:none;background:var(--primary);color:var(--primary-fg);font-size:15px;font-weight:600;cursor:pointer;transition:opacity .15s}.login-button:hover{opacity:.9}.login-button:disabled{opacity:.5;cursor:default}.portal{min-height:100vh;display:grid;grid-template-rows:auto 1fr}.portal-header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 28px;border-bottom:1px solid var(--card-border);background:var(--card);position:sticky;top:0;z-index:10}.portal-brand{display:flex;align-items:center;gap:12px}.portal-brand h1{font-size:18px;font-weight:700;letter-spacing:0}.portal-user{display:flex;align-items:center;gap:12px;font-size:14px;color:var(--muted)}.portal-user .badge{display:inline-flex;padding:3px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.logout-btn{padding:6px 14px;border-radius:6px;border:1px solid var(--card-border);background:var(--card);color:var(--muted);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s}.logout-btn:hover{border-color:#b8bfc4;color:var(--fg)}.portal-content{padding:28px;max-width:1160px;width:100%;margin:0 auto}.portal-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding:20px 0 24px}.portal-eyebrow{margin-bottom:8px;color:var(--accent);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.portal-hero h2{font-size:34px;font-weight:700;line-height:1.08;letter-spacing:0}.portal-hero p{margin-top:10px;color:var(--muted);font-size:14px;line-height:1.6}.portal-count{min-width:104px;padding:14px 16px;border:1px solid var(--card-border);border-radius:var(--radius);background:var(--card);text-align:right}.portal-count strong{display:block;font-size:26px;line-height:1}.portal-count span{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.quick-section,.library-section{margin-top:8px;margin-bottom:28px}.section-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}.section-title h3{font-size:15px;font-weight:700}.section-title span{color:var(--muted);font-size:12px}.quick-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.quick-card{display:grid;gap:8px;text-decoration:none;color:inherit;min-height:128px;padding:16px;border-radius:var(--radius);border:1px solid var(--card-border);background:var(--card);box-shadow:var(--shadow);transition:border-color .15s,box-shadow .15s,transform .15s}.quick-card:hover,.deck-row:hover{box-shadow:var(--shadow-lg);border-color:var(--accent)}.quick-card:hover{transform:translateY(-1px)}.quick-card h4{font-size:18px;line-height:1.25;letter-spacing:0}.quick-card p,.quick-recent{font-size:13px;color:var(--muted)}.quick-recent{align-self:end}.deck-pill{display:inline-flex;align-items:center;justify-content:center;width:fit-content;min-height:22px;padding:3px 8px;border-radius:999px;background:var(--accent-soft);color:#004a2b;color:oklch(.36 .1 158);font-size:11px;font-weight:700;letter-spacing:.02em}.list-toolbar{display:flex;gap:10px;align-items:end;margin-bottom:12px;padding:12px;border:1px solid var(--card-border);border-radius:var(--radius);background:var(--card)}.search-field,.select-field{display:grid;gap:6px}.search-field{flex:1 1 360px}.select-field{flex:0 0 180px}.search-field span,.select-field span{color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.search-field input,.select-field select{width:100%;min-height:38px;padding:8px 10px;border:1px solid var(--card-border);border-radius:6px;background:var(--surface-soft);color:var(--fg);font:inherit;font-size:14px;outline:none}.search-field input:focus,.select-field select:focus{border-color:var(--accent);background:var(--card);box-shadow:0 0 0 3px var(--accent-soft)}.deck-list{overflow:hidden;border:1px solid var(--card-border);border-radius:var(--radius);background:var(--card)}.deck-list-header,.deck-row{display:grid;grid-template-columns:minmax(320px,1.7fr) minmax(140px,.7fr) minmax(140px,.7fr) 72px;gap:16px;align-items:center}.deck-list-header{min-height:40px;padding:0 16px;border-bottom:1px solid var(--card-border);background:var(--surface-soft);color:var(--muted);font-size:12px;font-weight:700}.deck-row{min-height:66px;padding:10px 16px;border-bottom:1px solid var(--card-border);color:inherit;text-decoration:none;transition:border-color .15s,box-shadow .15s,background .15s}.deck-row:last-child{border-bottom:0}.deck-row:hover{background:#fcfeff}.deck-name-cell{display:flex;align-items:center;gap:12px;min-width:0}.file-icon{width:28px;height:34px;flex:0 0 auto;border:1px solid oklch(.84 .01 240);border-radius:4px;background:linear-gradient(135deg,transparent 0 72%,oklch(.9 .01 240) 72% 100%),linear-gradient(var(--card),var(--card));box-shadow:0 1px 2px #0000000a}.deck-title-line{display:flex;align-items:center;gap:8px;min-width:0}.deck-title-line strong{overflow:hidden;color:var(--fg);font-size:14px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.deck-path,.deck-cell{color:var(--muted);font-size:13px}.deck-path{display:block;margin-top:4px}.open-link{justify-self:end;color:var(--accent);font-size:13px;font-weight:700}.empty-state.compact{padding:36px 16px;border:0}.empty-state{text-align:center;padding:60px 24px;color:var(--muted);font-size:15px}.loading{min-height:100vh;display:grid;place-items:center;color:var(--muted);font-size:15px}.portal-content .loading{min-height:260px}@media(max-width:640px){.portal-header{align-items:flex-start;padding:12px 16px}.portal-user{flex-wrap:wrap;justify-content:flex-end}.portal-content{padding:20px 14px}.portal-hero{display:grid;gap:14px}.portal-count{text-align:left}.quick-grid{grid-template-columns:1fr}.list-toolbar{display:grid}.search-field,.select-field{flex:none}.deck-list-header{display:none}.deck-row{grid-template-columns:1fr;gap:8px;min-height:auto;padding:14px}.deck-cell,.open-link{padding-left:40px}.open-link{justify-self:start}.login-card{padding:28px 20px}}
