:root{--bg:#f7f5f2;--surface:#fff;--text:#2d2a26;--muted:#5c564e;--accent:#7c5cbf;--accent-dark:#63459e;--error:#b3261e;--border:#e2ddd5;color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:var(--bg);min-height:100vh;margin:0}#root,.site{flex-direction:column;min-height:100vh;display:flex}.site-content{flex-direction:column;flex:1;display:flex}.site-content>*{flex:1}.site-footer{color:var(--muted);border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap;justify-content:center;align-items:center;gap:1.2rem;padding:1rem 1.25rem 1.5rem;font-size:.85rem;display:flex}.site-footer nav{flex-wrap:wrap;gap:1.2rem;display:flex}.site-footer a{color:var(--accent-dark);text-decoration:none}.site-footer a:hover{text-decoration:underline}h1{margin:0 0 .25rem;font-size:1.5rem}.muted{color:var(--muted);font-size:.9rem}.error{color:var(--error);margin:0;font-size:.9rem}.auth-page{flex:1;justify-content:center;align-items:center;padding:1rem;display:flex;position:relative;overflow:hidden}.auth-page:before{content:"";opacity:.07;pointer-events:none;background-image:url(/favicon.svg);background-repeat:no-repeat;background-size:contain;width:420px;height:420px;position:absolute;bottom:-80px;right:-80px;transform:rotate(-8deg)}.card{z-index:1;position:relative}.card-logo{justify-content:center;margin-bottom:.25rem;display:flex}.auth-page .card h1,.auth-page .card>.muted:first-of-type{text-align:center}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:.9rem;width:100%;max-width:24rem;padding:2rem;display:flex}.card label{flex-direction:column;gap:.3rem;font-size:.9rem;font-weight:500;display:flex}.card input{border:1px solid var(--border);background:var(--bg);border-radius:8px;padding:.6rem .7rem;font-size:1rem}.card input:focus{outline:2px solid var(--accent);border-color:#0000}.card button[type=submit]{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.65rem;font-size:1rem;font-weight:600}.card button[type=submit]:hover:not(:disabled){background:var(--accent-dark)}.card button[type=submit]:disabled{opacity:.6;cursor:default}.card a{color:var(--accent-dark)}.app-shell{flex-direction:column;flex:1;display:flex}.app-header{background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.75rem 1.25rem;display:flex}.brand{align-items:center;gap:.5rem;font-size:1.1rem;font-weight:700;display:flex}.header-right{align-items:center;gap:.9rem;display:flex}.link-button{color:var(--accent-dark);cursor:pointer;background:0 0;border:none;padding:0;font-size:.9rem}.link-button:hover{text-decoration:underline}.app-main{width:100%;max-width:60rem;margin:0 auto;padding:1.5rem 1.25rem}.site:before{content:"";opacity:.2;z-index:-1;pointer-events:none;background:url(/placeholder-mouth-thermometer.webp) 50%/cover no-repeat;position:fixed;inset:0}.page-loading{color:var(--muted);flex:1;justify-content:center;align-items:center;display:flex}.app-nav{gap:1rem;margin:0 auto 0 2rem;display:flex}.app-nav a{color:var(--muted);border-bottom:2px solid #0000;padding:.25rem 0;font-size:.95rem;text-decoration:none}.app-nav a.active{color:var(--text);border-bottom-color:var(--accent)}@media (width<=600px){.header-email{display:none}}.page-narrow{max-width:28rem}.stack{flex-direction:column;gap:.9rem;margin-top:1rem;display:flex}.stack label{flex-direction:column;gap:.3rem;font-size:.9rem;font-weight:500;display:flex}.stack input,.stack select,.stack textarea{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:.6rem .7rem;font-family:inherit;font-size:1rem}.stack input:focus,.stack select:focus,.stack textarea:focus{outline:2px solid var(--accent);border-color:#0000}.stack button[type=submit],.button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;align-self:flex-start;padding:.6rem 1.1rem;font-size:.95rem;font-weight:600}.stack button[type=submit]:hover,.button:hover{background:var(--accent-dark)}.row{align-items:center;gap:.8rem;display:flex}.success{color:#2e7d32;font-size:.9rem}.section{border-top:1px solid var(--border);margin-top:2.5rem;padding-top:1.5rem}.section h2{margin:0 0 .5rem;font-size:1.15rem}.keyword-list{flex-direction:column;gap:.5rem;margin:1rem 0 0;padding:0;list-style:none;display:flex}.keyword-list li{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.7rem 1rem;display:flex}.keyword-list li.inactive{opacity:.6}.keyword-main{flex-wrap:wrap;align-items:center;gap:.7rem;display:flex}.kw{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.15rem .5rem;font-weight:600}.pill{color:var(--accent-dark);background:#ece7f7;border-radius:999px;padding:.1rem .6rem;font-size:.8rem}.pill-off{color:var(--muted);background:#eee}.keyword-actions{gap:.8rem;display:flex}.empty-state{margin-top:1rem}.common-grid{grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:.5rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.common-grid li{background:var(--surface);border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;gap:.5rem;padding:.55rem .8rem;display:flex}.button-small{padding:.35rem .8rem;font-size:.85rem}.button:disabled{color:#7a746b;cursor:default;background:#d9d2c7}.filters{flex-wrap:wrap;gap:1rem;margin:1rem 0;display:flex}.filters label{flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:500;display:flex}.filters select,.filters input{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:.45rem .6rem;font-size:.95rem}.event-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.event-list li{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.65rem 1rem}.event-list li.unrecognized-row{border-style:dashed}.event-main{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.event-label{font-weight:500}.event-time{font-size:.85rem}.event-raw{margin-top:.15rem;font-size:.85rem}.pill-warn{color:#8a5a00;background:#fdecc8}.event-actions{align-items:center;gap:.8rem;margin-top:.35rem;display:flex}.reassign-select{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:.3rem .5rem;font-size:.85rem}.event-edit{flex-wrap:wrap;align-items:flex-end;gap:.9rem;display:flex}.event-edit label{flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:500;display:flex}.event-edit input{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:.45rem .6rem;font-size:.95rem}.export-group{align-items:flex-end;gap:.4rem;margin-left:auto;display:flex}.export-label{align-self:center;padding-bottom:.1rem}.chart-controls{flex-wrap:wrap;align-items:center;gap:1rem;margin:1rem 0 .5rem;display:flex}.range-buttons{border:1px solid var(--border);border-radius:8px;display:inline-flex;overflow:hidden}.range-button{background:var(--surface);cursor:pointer;color:var(--muted);border:none;padding:.4rem .9rem;font-size:.9rem}.range-button.active{background:var(--accent);color:#fff;font-weight:600}.keyword-chips{flex-wrap:wrap;gap:.4rem;display:flex}.chip{border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:999px;padding:.3rem .8rem;font-size:.85rem}.chip-on{border-color:var(--accent);color:var(--accent-dark);background:#ece7f7;font-weight:600}.chart-wrap{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1rem .5rem .5rem}.banner{border-radius:10px;padding:.7rem 1rem;font-size:.95rem}.banner-success{color:#205723;background:#e6f4e6;border:1px solid #bfe0bf}.banner-info{color:#2b4a68;background:#eef3f8;border:1px solid #cfdeec}.banner-warn{color:#6d4c00;background:#fdf3d7;border:1px solid #ecd9a0}.app-banner{max-width:60rem;margin:1rem 1.25rem 0}.consent{color:var(--muted);align-items:flex-start;line-height:1.45;flex-direction:row!important;gap:.6rem!important;font-size:.85rem!important;font-weight:400!important}.consent input[type=checkbox]{flex-shrink:0;width:1rem;height:1rem;margin-top:.2rem}.modal-overlay{z-index:100;background:#2d2a2680;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:12px;width:100%;max-width:26rem;padding:1.5rem;box-shadow:0 10px 40px #0003}.modal h2{margin:0 0 .5rem;font-size:1.2rem}.modal-actions{flex-wrap:wrap;margin-top:1.2rem}@media (width>=62rem){.app-banner{margin-left:auto;margin-right:auto}}
