:root{--bg: #f4f5f8;--surface: #ffffff;--surface-2: #f8f9fb;--text: #151a23;--muted: #5c6675;--border: #e1e5eb;--primary: #4338ca;--primary-hover: #3730a3;--primary-soft: #eceafd;--primary-text: #ffffff;--success: #15803d;--success-soft: #e6f4ea;--warning: #b45309;--warning-soft: #fdf1dc;--danger: #b42318;--danger-soft: #fdecea;--info: #1d4ed8;--info-soft: #e5edff;--brand-panel: #1e1b4b;--brand-panel-text: #e9e8ff;--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 4px 14px rgba(16, 24, 40, .05);--radius: 14px;color-scheme:light dark}@media (prefers-color-scheme: dark){:root{--bg: #0f1217;--surface: #171b22;--surface-2: #1c212a;--text: #e8ebf0;--muted: #9aa5b3;--border: #2b323d;--primary: #8b87ff;--primary-hover: #a3a0ff;--primary-soft: #26254a;--primary-text: #0d0c24;--success: #5fd38d;--success-soft: #16301f;--warning: #f5b95b;--warning-soft: #3a2a10;--danger: #ff8a80;--danger-soft: #3a1f1d;--info: #8fb2ff;--info-soft: #1b2745;--brand-panel: #14123a;--brand-panel-text: #d9d8ff;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 14px rgba(0, 0, 0, .3)}}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.55;-webkit-font-smoothing:antialiased}h1{font-size:1.75rem;line-height:1.2;margin:0 0 .35rem;letter-spacing:-.02em}h2{font-size:1.2rem;margin:0;letter-spacing:-.01em}h3{font-size:1rem;margin:0}.icon{flex:none}.muted{color:var(--muted);margin:.25rem 0}.center{text-align:center;padding:3rem 1rem;color:var(--muted)}.lead{color:var(--muted);margin:0 0 1.25rem;font-size:1.02rem}.page{max-width:800px;margin:0 auto;padding:2rem 1rem 4rem}.page-head{margin-bottom:1.25rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem;margin:1rem 0}.navbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:1rem;padding:.7rem 1.25rem;background:var(--surface);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:.55rem;font-weight:700;letter-spacing:-.01em}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;color:var(--primary-text);background:var(--primary)}.navbar nav{display:flex;gap:.25rem;margin-left:.5rem}.navbar nav a{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .8rem;color:var(--muted);font-weight:600;font-size:.95rem;text-decoration:none;border-radius:9px}.navbar nav a:hover{background:var(--surface-2);color:var(--text)}.navbar nav a.active{color:var(--primary);background:var(--primary-soft)}.spacer{flex:1}.avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;font-weight:700;font-size:.9rem;color:var(--primary);background:var(--primary-soft)}.who{color:var(--text);font-weight:600;font-size:.95rem}.field{margin-bottom:1.1rem}label{display:block;font-weight:600;font-size:.92rem;margin-bottom:.35rem}input,select{width:100%;padding:.7rem .85rem;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;transition:border-color .15s,box-shadow .15s}input:hover,select:hover{border-color:var(--muted)}input:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}input::placeholder{color:var(--muted);opacity:.8}input[aria-invalid=true]{border-color:var(--danger)}.field-error{color:var(--danger);margin:.3rem 0 0;font-size:.88rem}.hint{color:var(--muted);font-size:.86rem;margin:.3rem 0 0}.input-icon{position:relative}.input-icon .icon{position:absolute;left:.8rem;top:50%;transform:translateY(-50%);color:var(--muted)}.input-icon input{padding-left:2.5rem}.row{display:grid;grid-template-columns:1fr 200px;gap:1rem}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.7rem 1.1rem;font:inherit;font-weight:600;text-decoration:none;color:var(--primary-text);background:var(--primary);border:1px solid var(--primary);border-radius:10px;cursor:pointer;transition:background .15s,border-color .15s}button:hover:not(:disabled),.button:hover{background:var(--primary-hover);border-color:var(--primary-hover)}button:disabled{opacity:.65;cursor:not-allowed}button.secondary,.button.google{color:var(--text);background:var(--surface);border-color:var(--border)}button.secondary:hover:not(:disabled),.button.google:hover{background:var(--surface-2);border-color:var(--muted)}button.danger{color:var(--danger);background:var(--surface);border-color:var(--border)}button.danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}button.small{padding:.45rem .8rem;font-size:.9rem}:focus-visible{outline:3px solid var(--primary);outline-offset:2px}form button[type=submit]{width:100%;padding:.8rem 1.1rem}.spinner{width:18px;height:18px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation-duration:2s}}.banner{display:flex;gap:.6rem;align-items:flex-start;margin:1rem 0;padding:.8rem 1rem;color:var(--danger);background:var(--danger-soft);border:1px solid var(--danger);border-radius:10px}.progress{display:flex;gap:.8rem;align-items:center;margin-top:1rem;padding:.85rem 1rem;color:var(--primary);background:var(--primary-soft);border-radius:10px;font-weight:500}.auth-page{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}.auth-aside{display:flex;flex-direction:column;justify-content:center;gap:2rem;padding:3rem;color:var(--brand-panel-text);background:var(--brand-panel)}.auth-aside .brand-mark{width:44px;height:44px;background:var(--brand-panel-text);color:var(--brand-panel)}.auth-aside h2{font-size:2rem;line-height:1.2;color:#fff;max-width:22ch}.features{list-style:none;margin:0;padding:0;display:grid;gap:1rem}.features li{display:flex;gap:.75rem;align-items:flex-start}.features .tick{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#ffffff24}.auth-main{display:grid;place-items:center;padding:2rem 1rem}.auth-card{width:100%;max-width:420px;margin:0}.tabs{display:flex;gap:.25rem;padding:.25rem;margin:1.25rem 0;background:var(--surface-2);border:1px solid var(--border);border-radius:11px}.tabs button{flex:1;color:var(--muted);background:transparent;border-color:transparent}.tabs button:hover:not(:disabled){background:transparent;border-color:transparent;color:var(--text)}.tabs button[aria-selected=true]{color:var(--text);background:var(--surface);border-color:var(--border);box-shadow:var(--shadow)}.button.google{width:100%}.divider{display:flex;align-items:center;gap:.75rem;color:var(--muted);margin:1.1rem 0;font-size:.88rem}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--border)}.review{padding:0;overflow:hidden}.review-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.5rem;background:var(--surface-2);border-bottom:1px solid var(--border)}.chip{display:inline-block;padding:.15rem .6rem;font-size:.8rem;font-weight:600;color:var(--primary);background:var(--primary-soft);border-radius:999px}.score-ring{position:relative;width:88px;height:88px;flex:none}.score-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.score-ring .track{stroke:var(--border)}.score-ring .bar{stroke-linecap:round;transition:stroke-dashoffset .6s ease}.score-ring.good .bar{stroke:var(--success)}.score-ring.ok .bar{stroke:var(--warning)}.score-ring.low .bar{stroke:var(--danger)}.score-value{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;text-align:center;font-size:1.6rem;font-weight:800;line-height:1}.score-value span{margin-top:.15rem;font-size:.75rem;font-weight:600;color:var(--muted)}.review-body{padding:1.5rem;display:grid;gap:1.25rem}.summary{margin:0;font-size:1.02rem;overflow-wrap:anywhere}.section{padding:1rem 1.1rem;border:1px solid var(--border);border-radius:12px}.section h3{display:flex;align-items:center;gap:.5rem;margin-bottom:.6rem}.section ul{margin:0;padding-left:1.2rem;display:grid;gap:.45rem;overflow-wrap:anywhere}.section.good{background:var(--success-soft);border-color:transparent}.section.good h3{color:var(--success)}.section.bad{background:var(--warning-soft);border-color:transparent}.section.bad h3{color:var(--warning)}.section.tips{background:var(--info-soft);border-color:transparent}.section.tips h3{color:var(--info)}.review blockquote{margin:0;padding:.9rem 1.1rem;border-left:4px solid var(--primary);background:var(--primary-soft);border-radius:0 10px 10px 0;white-space:pre-wrap;overflow-wrap:anywhere}.roast-title{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;color:var(--primary)}.history{list-style:none;padding:0;margin:0}.history-item{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin:.75rem 0;padding:1rem 1.25rem}.history-main{display:flex;align-items:center;gap:1rem;min-width:0}.badge{display:grid;place-items:center;width:46px;height:46px;flex:none;font-weight:800;border-radius:12px}.badge.good{color:var(--success);background:var(--success-soft)}.badge.ok{color:var(--warning);background:var(--warning-soft)}.badge.low{color:var(--danger);background:var(--danger-soft)}.history-title{font-weight:700;overflow-wrap:anywhere}.meta{display:flex;flex-wrap:wrap;gap:.35rem .75rem;align-items:center;color:var(--muted);font-size:.88rem}.meta span{display:inline-flex;align-items:center;gap:.3rem}.actions{display:flex;gap:.5rem}.empty{text-align:center;padding:3rem 1.5rem}.empty .brand-mark{margin:0 auto 1rem;width:52px;height:52px;border-radius:14px}@media (max-width: 860px){.auth-page{grid-template-columns:1fr}.auth-aside{display:none}}@media (max-width: 600px){.row{grid-template-columns:1fr}.navbar{flex-wrap:wrap;padding:.6rem .9rem}.who{display:none}.review-head{flex-direction:row}}
