:root{--color-accent: #2f6fed;--color-accent-soft: #e8effd;--color-accent-hover: #245cd0;--color-bg: #f7f8fa;--color-surface: #ffffff;--color-text: #1c2333;--color-text-muted: #6a7386;--color-border: #e4e7ee;--color-danger: #c0362c;--color-danger-soft: #fbeae8;--radius-card: 14px;--radius-control: 9px;--shadow-card: 0 1px 2px rgba(28, 35, 51, .05), 0 4px 16px rgba(28, 35, 51, .05);--font-stack: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}body{margin:0;font-family:var(--font-stack);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased}h1{font-size:1.5rem;font-weight:650;margin:0}h2{font-size:1.05rem;font-weight:600;margin:0 0 .35rem}.muted{color:var(--color-text-muted);margin:.25rem 0 0}.brand{color:var(--color-accent);font-weight:700;letter-spacing:-.02em}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:1.25rem 1.5rem}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.btn{font:inherit;border-radius:var(--radius-control);border:1px solid transparent;padding:.55rem 1.1rem;cursor:pointer;transition:background-color .12s ease}.btn-primary{background:var(--color-accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover)}.btn-primary:disabled{opacity:.65;cursor:default}.btn-ghost{background:transparent;color:var(--color-text-muted);border-color:var(--color-border)}.btn-ghost:hover{color:var(--color-text);background:var(--color-bg)}.select,.field input{font:inherit;padding:.5rem .7rem;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-text)}.field input:focus,.select:focus,.palette-input:focus{outline:2px solid var(--color-accent);outline-offset:1px}.app-shell{display:flex;min-height:100vh}.sidebar{width:220px;flex-shrink:0;background:var(--color-surface);border-right:1px solid var(--color-border);padding:1.5rem 1rem;display:flex;flex-direction:column;gap:1.5rem}.sidebar-brand{font-size:1.2rem;padding:0 .5rem}.sidebar-nav{display:flex;flex-direction:column;gap:.25rem}.sidebar-nav a{padding:.55rem .75rem;border-radius:var(--radius-control);color:var(--color-text-muted);text-decoration:none;font-weight:500}.sidebar-nav a:hover{background:var(--color-bg);color:var(--color-text)}.sidebar-nav a.active{background:var(--color-accent-soft);color:var(--color-accent)}.sidebar-footnote{margin-top:auto;color:var(--color-text-muted);font-size:.8rem;padding:0 .5rem}.app-main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:1rem;padding:.85rem 2rem;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.topbar-service{font-weight:600;margin-right:auto}.nav-toggle{display:none;font:inherit;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);padding:.4rem .8rem;cursor:pointer}.page{padding:2rem;max-width:1040px;width:100%}.page-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.stat-label{margin:0;color:var(--color-text-muted);font-size:.85rem;font-weight:500}.stat-value{margin:.35rem 0 0;font-size:1.9rem;font-weight:650;letter-spacing:-.02em}.stat-value--error{color:var(--color-danger);font-size:1.15rem}.stat-note{margin:.35rem 0 0;font-size:.78rem;color:var(--color-text-muted)}.stat-card--placeholder{border-style:dashed;box-shadow:none}.table-card{padding:.5rem 0;overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.7rem 1.5rem}th{color:var(--color-text-muted);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--color-border)}tbody tr:not(:last-child) td{border-bottom:1px solid var(--color-border)}.cell-strong{font-weight:550}.badge{display:inline-block;padding:.15rem .6rem;border-radius:999px;font-size:.78rem;font-weight:550;text-transform:capitalize;background:var(--color-bg);color:var(--color-text-muted)}.badge--enrolled{background:var(--color-accent-soft);color:var(--color-accent)}.skeleton{display:inline-block;height:.95em;border-radius:6px;background:linear-gradient(90deg,var(--color-border) 25%,var(--color-bg) 50%,var(--color-border) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.4s ease infinite}.skeleton-row{padding:.55rem 0}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-state{text-align:center;padding:3rem 1.5rem}.empty-state p{color:var(--color-text-muted);margin:0}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem}.login-card{width:100%;max-width:380px;display:flex;flex-direction:column;gap:1rem;padding:2rem}.login-subtitle{margin:-.75rem 0 0;color:var(--color-text-muted)}.field{display:flex;flex-direction:column;gap:.35rem}.field label{font-size:.85rem;font-weight:550}.form-error{margin:0;padding:.6rem .8rem;border-radius:var(--radius-control);background:var(--color-danger-soft);color:var(--color-danger);font-size:.9rem}.palette-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c233366;display:flex;justify-content:center;align-items:flex-start;padding:12vh 1rem 0;z-index:50}.palette{width:100%;max-width:480px;padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.palette-input{font:inherit;font-size:1rem;padding:.7rem .85rem;border:1px solid var(--color-border);border-radius:var(--radius-control);width:100%}.palette-results{list-style:none;margin:0;padding:0;max-height:40vh;overflow-y:auto}.palette-item{font:inherit;width:100%;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.6rem .85rem;border:none;border-radius:var(--radius-control);background:transparent;cursor:pointer;text-align:left}.palette-item:hover,.palette-item:focus{background:var(--color-accent-soft);color:var(--color-accent)}.palette-hint{font-size:.75rem;color:var(--color-text-muted);background:var(--color-bg);border-radius:999px;padding:.1rem .55rem}.palette-empty{padding:.75rem .85rem;color:var(--color-text-muted)}.palette-footer{margin:0;padding:0 .85rem .25rem;font-size:.75rem;color:var(--color-text-muted)}@media(max-width:768px){.sidebar{position:fixed;inset:0 auto 0 0;z-index:40;transform:translate(-100%);transition:transform .16s ease;box-shadow:var(--shadow-card)}.sidebar--open{transform:translate(0)}.nav-toggle{display:inline-block}.topbar{padding:.75rem 1rem}.page{padding:1.25rem 1rem}}.capture-layout{display:grid;grid-template-columns:minmax(240px,1fr) 2fr;gap:1rem;align-items:start}@media(max-width:760px){.capture-layout{grid-template-columns:1fr}}.capture-room-group{border:none;padding:0;margin:.75rem 0 0}.capture-room-group legend{font-size:.8rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;padding:0;margin-bottom:.35rem}.capture-child-option{display:flex;align-items:center;gap:.5rem;padding:.35rem 0;cursor:pointer}.capture-stage{min-height:320px;display:flex;align-items:center;justify-content:center}.capture-mic-area{display:flex;flex-direction:column;align-items:center;gap:1rem}.mic-button{position:relative;width:108px;height:108px;border-radius:50%;border:none;background:var(--color-accent);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .12s ease,background-color .12s ease}.mic-button:hover:not(:disabled){background:var(--color-accent-hover);transform:scale(1.03)}.mic-button:active:not(:disabled){transform:scale(.97)}.mic-button:disabled{background:var(--color-border);color:var(--color-text-muted);cursor:not-allowed}.mic-button--recording{background:var(--color-danger)}.mic-ring{position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px;border-radius:50%;border:3px solid var(--color-danger);animation:mic-pulse 1.4s ease-out infinite}@keyframes mic-pulse{0%{transform:scale(.9);opacity:.9}to{transform:scale(1.25);opacity:0}}.capture-status{font-weight:600}.capture-status--recording{color:var(--color-danger);font-variant-numeric:tabular-nums}.capture-status--done{color:var(--color-accent)}.capture-result{max-width:46rem}.capture-transcript{margin:.75rem 0;padding-left:.9rem;border-left:3px solid var(--color-border);color:var(--color-text-muted);font-style:italic}.capture-warning{color:var(--color-danger);font-size:.85rem}.capture-error{color:var(--color-danger);font-weight:600}.capture-actions{display:flex;gap:.75rem;margin-top:1rem;align-items:center}.chip-row{display:flex;gap:.5rem}.chip-row--wrap{flex-wrap:wrap}.chip{font:inherit;font-size:.85rem;border-radius:999px;border:1px solid var(--color-border);background:var(--color-surface);padding:.35rem .9rem;cursor:pointer}.chip--active{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent);font-weight:600}.obs-layout{display:grid;grid-template-columns:minmax(260px,1.2fr) 2fr;gap:1rem;align-items:start}@media(max-width:900px){.obs-layout{grid-template-columns:1fr}}.obs-list{display:flex;flex-direction:column;gap:.6rem}.obs-item{font:inherit;text-align:left;display:flex;flex-direction:column;gap:.4rem;cursor:pointer}.obs-item--selected{border-color:var(--color-accent)}.obs-item .badge{align-self:flex-start}.obs-item-meta{color:var(--color-text-muted);font-size:.8rem}.obs-detail audio{width:100%;margin:.5rem 0 .75rem}.obs-transcript blockquote{margin:.35rem 0 .9rem;padding-left:.9rem;border-left:3px solid var(--color-border);color:var(--color-text-muted);font-style:italic}.obs-editor-label{display:block;font-weight:600;margin:.75rem 0 .35rem}.obs-editor{width:100%;font:inherit;border:1px solid var(--color-border);border-radius:var(--radius-control);padding:.65rem .8rem;resize:vertical}.eylf-chip{font:inherit;font-size:.85rem;border-radius:999px;border:1px solid var(--color-border);background:var(--color-surface);padding:.3rem .75rem;cursor:pointer;margin-bottom:.4rem}.eylf-chip--selected{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent);font-weight:600}.eylf-chip--ai.eylf-chip--selected{border-style:dashed}.eylf-chip-hint{font-size:.7rem;opacity:.75}.obs-actions{margin-top:1rem;display:flex;align-items:center;gap:.75rem}.obs-publish-note{font-size:.85rem}.badge--draft{background:var(--color-border)}.badge--pending_review{background:#fdf3e0;color:#8a5b13}.badge--published{background:#e2f5e8;color:#1c6b3c}.preview-badge{display:inline-block;vertical-align:middle;margin-left:.5rem;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#8a5b13;background:#fdf3e0;border-radius:999px;padding:.25rem .6rem}.phone-frame{width:380px;max-width:100%;margin:.5rem auto;background:var(--color-surface);border:10px solid #1c2333;border-radius:34px;min-height:560px;padding:2rem .9rem 1rem;position:relative;overflow:hidden}.phone-notch{position:absolute;top:8px;left:50%;transform:translate(-50%);width:110px;height:16px;background:#1c2333;border-radius:999px}.phone-empty{display:flex;align-items:center;justify-content:center;min-height:320px;text-align:center}.feed{display:flex;flex-direction:column;gap:.75rem}.feed-heading{font-weight:700;font-size:1.1rem;margin:0}.feed-card{background:var(--color-bg);border-radius:var(--radius-card);padding:.9rem 1rem}.feed-card--stub{border:1px dashed var(--color-border);background:transparent}.feed-card-title{font-weight:600;margin:0 0 .2rem}.feed-photo{height:140px;border-radius:10px;background:linear-gradient(135deg,var(--color-accent-soft),#fdf3e0);display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);font-weight:600;margin-bottom:.6rem}.feed-card-date{font-size:.75rem;color:var(--color-text-muted);margin:0 0 .3rem}.feed-card-body{margin:0;line-height:1.5}.feed-card-outcomes{margin:.5rem 0 0;font-size:.75rem;color:var(--color-accent);font-weight:600}.timeline{display:flex;flex-direction:column;gap:.75rem}.timeline-photos{margin-bottom:1rem}.timeline-date{font-size:.8rem;color:var(--color-text-muted);margin:0 0 .35rem}.timeline-outcomes{margin:.5rem 0 0;font-size:.8rem;color:var(--color-accent);font-weight:600}.nav-capture svg{vertical-align:-2px;margin-right:.4rem}.stat-card--action{text-decoration:none;color:inherit;border-color:var(--color-accent);background:var(--color-accent-soft)}.stat-value--action{font-size:1.15rem;color:var(--color-accent)}.row-link{color:inherit;text-decoration:none}.row-link:hover{color:var(--color-accent);text-decoration:underline}
