
:root{--bg:#edf2ed;--panel:#f7faf7;--line:#d3ddd2;--text:#17231d;--muted:#6f8276;--green:#0a7a31;--mint:#e6f5ec;--blue:#e7effe;--purple:#efe8ff;--rose:#ffe8ef;--peach:#fff1e4;--shadow:0 18px 44px rgba(20,40,24,.08)}
*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:'Inter',sans-serif;background:linear-gradient(180deg,#f3f7f2 0%, #edf2ed 100%);color:var(--text)}button,input,textarea,select{font:inherit}
.app-shell{display:grid;grid-template-columns:320px 1fr;min-height:100vh}.sidebar{background:rgba(245,249,245,.9);border-right:1px solid var(--line);padding:26px 18px;position:sticky;top:0;height:100vh;overflow:auto;backdrop-filter:blur(8px)}
.brand-block{display:flex;align-items:center;gap:14px;margin-bottom:20px}.brand-mark{width:52px;height:52px;border-radius:16px;background:linear-gradient(135deg,#0a7a31,#49b86d);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;box-shadow:var(--shadow)}.brand-name{font-size:24px;font-weight:800}.brand-sub{color:var(--muted);font-size:14px}
.logo-stack{display:grid;gap:12px;margin-bottom:20px}.partner-logo{width:100%;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.ciao-logo{padding:12px 16px;height:86px}.nema-logo{padding:10px;height:130px;background:#18298d}
.switcher{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:18px 0}.switch-btn{border:1px solid var(--line);background:#fff;color:var(--muted);padding:12px 14px;border-radius:16px;cursor:pointer}.switch-btn.active{background:var(--green);color:#fff;border-color:var(--green)}
.menu{display:grid;gap:8px;margin-top:8px}.menu-item{border:none;background:transparent;display:flex;align-items:center;gap:12px;color:#30463a;padding:14px 16px;border-radius:16px;cursor:pointer;text-align:left}.menu-item i{font-size:20px}.menu-item.active,.menu-item:hover{background:#e8f3ea;color:var(--green)}
.side-note{margin-top:20px;background:linear-gradient(180deg,#f9fffa,#eef7ef);border:1px solid var(--line);border-radius:22px;padding:18px}.side-note-title{font-weight:700;margin-bottom:8px}.side-note-text{font-size:14px;color:var(--muted);line-height:1.5}
.main{padding:28px}.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:20px}.eyebrow,.panel-eyebrow{margin:0 0 8px;color:var(--muted);font-size:13px;letter-spacing:.03em;text-transform:uppercase}#pageTitle{margin:0;font-size:42px}.top-actions{display:flex;gap:10px;flex-wrap:wrap}
.pill-button{border:none;border-radius:16px;padding:14px 18px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:10px}.pill-button.primary{background:var(--green);color:#fff;box-shadow:var(--shadow)}.pill-button.soft{background:#fff;color:var(--green);border:1px solid var(--line)}
.section{display:none}.section.active{display:block}
.hero-card{background:linear-gradient(135deg,#f8fcf8 0%,#edf8ef 40%,#e6f2ff 100%);border:1px solid var(--line);border-radius:32px;padding:30px;display:grid;grid-template-columns:1.25fr .95fr;gap:26px;box-shadow:var(--shadow)}
.hero-badge{display:inline-block;background:#e9f5eb;color:var(--green);border:1px solid #cfe7d5;padding:10px 14px;border-radius:999px;font-size:14px;font-weight:600;margin-bottom:14px}.hero-copy h2{margin:0 0 14px;font-size:44px;line-height:1.02}.hero-copy p{margin:0;color:#4f6457;font-size:18px;line-height:1.65}.hero-actions{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap}
.hero-side{display:grid;gap:14px}.mini-stat{background:rgba(255,255,255,.82);border:1px solid var(--line);border-radius:24px;padding:22px}.mini-stat-label{font-size:13px;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.mini-stat-value{font-size:28px;font-weight:800;margin-bottom:8px}.mini-stat-caption{color:var(--muted);line-height:1.5}
.mini-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.mini-card{border-radius:22px;padding:18px;min-height:120px;display:flex;flex-direction:column;justify-content:space-between;border:1px solid rgba(0,0,0,.04)}.mini-card i{font-size:22px}.mini-card span{font-size:13px;color:#53685b}.mini-card strong{font-size:16px}.mint{background:var(--mint)}.sky{background:var(--blue)}.peach{background:var(--peach)}.sage{background:#ebf3e3}
.card-grid{display:grid;gap:18px;margin-top:22px}.card-grid.three{grid-template-columns:repeat(3,1fr)}.card-grid.four{grid-template-columns:repeat(4,1fr)}.info-card,.audio-card,.audio-toolbar{background:rgba(247,250,247,.95);border:1px solid var(--line);border-radius:28px;padding:24px;box-shadow:var(--shadow)}
.card-icon{width:56px;height:56px;border-radius:18px;display:flex;align-items:center;justify-content:center;font-size:24px;margin-bottom:16px}.info-card h3,.audio-card h3{margin:0 0 10px;font-size:26px}.info-card p,.audio-card p{margin:0;color:#54675b;line-height:1.65}
.split-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:18px;margin-top:22px}.panel{background:rgba(247,250,247,.95);border:1px solid var(--line);border-radius:28px;padding:24px;box-shadow:var(--shadow)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.panel-head h3{margin:0;font-size:28px}.text-button{background:transparent;border:none;color:var(--green);font-weight:700;cursor:pointer}
.action-list,.routine-list,.logic-list,.db-status{display:grid;gap:12px}.action-item{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px 18px;cursor:pointer}.action-item i{font-size:22px;color:var(--green)}.action-item span{flex:1;text-align:left}.action-item strong{font-size:14px;color:var(--muted)}
.section-hero.compact{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;background:linear-gradient(135deg,#f8fcf8,#eef7ff);border:1px solid var(--line);border-radius:28px;padding:24px 26px;box-shadow:var(--shadow)}.section-hero h2{margin:0 0 8px;font-size:38px}.section-hero p{margin:0;color:#53685b;line-height:1.65;max-width:840px}
.logic-item,.db-item{background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px}.logic-item h4,.db-item h4{margin:0 0 8px}.logic-meta,.db-meta{font-size:14px;color:var(--muted);line-height:1.5}
.check-form .form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.check-form label{display:grid;gap:8px;color:#375145;font-weight:600}.check-form input,.check-form textarea,.check-form select,.chat-input-row input,.mini-form input,.mini-form select,.admin-form input,.admin-form select{width:100%;border:1px solid var(--line);border-radius:16px;padding:14px 16px;background:#fff}.check-form .full{margin-top:14px}
.camera-actions,.scanner-buttons,.audio-toolbar-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.audio-controls-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.audio-control-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:16px}.audio-control-card.wide{grid-column:span 2}.audio-control-card label{display:block;font-size:13px;color:var(--muted);margin-bottom:8px;text-transform:uppercase}.audio-control-card select,.audio-control-card input{width:100%;border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:#fff}.small-note{color:#566b5f;line-height:1.5}
.tag{display:inline-flex;padding:8px 12px;border-radius:999px;font-size:13px;font-weight:700}.tag.purple{background:var(--purple);color:#6a3cff}.tag.blue{background:var(--blue);color:#2c68ff}.tag.rose{background:var(--rose);color:#d94e7d}.tag.green{background:var(--mint);color:#0b7e33}.tag.orange{background:var(--peach);color:#c26b00}.tag.mint{background:#e8f7f0;color:#0e7f4a}
.audio-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.audio-top i{font-size:22px;color:var(--green)}
.breathing-wrap{display:flex;align-items:center;gap:30px}.breathing-orb{width:200px;height:200px;border-radius:50%;background:radial-gradient(circle at 30% 30%, #f9ffff 0%, #a9e8ca 35%, #0a7a31 100%);box-shadow:0 18px 44px rgba(10,122,49,.22);flex:0 0 auto}.breathing-orb.animate{animation:breath 8s ease-in-out infinite}@keyframes breath{0%,100%{transform:scale(.88)}50%{transform:scale(1.06)}}.breathing-copy h4{margin:0 0 10px;font-size:28px}.breathing-copy p{margin:0;color:#5a6d60;line-height:1.7}
.metric-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.metric-card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:22px}.metric-card span{display:block;color:var(--muted);margin-bottom:10px}.metric-card strong{font-size:30px}
.routine-item{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:20px;padding:16px}.routine-item i{font-size:20px;color:var(--green);margin-top:2px}.routine-item strong{display:block;margin-bottom:4px}.routine-item span{color:var(--muted);line-height:1.5}
.camera-box{position:relative;overflow:hidden;border-radius:24px;min-height:340px;background:linear-gradient(135deg,#dde8e0,#eef3f0);border:1px solid var(--line)}#cameraPreview{width:100%;height:340px;object-fit:cover;background:#dce8dd}.camera-overlay{position:absolute;inset:auto 16px 16px 16px;background:rgba(255,255,255,.84);border:1px solid var(--line);border-radius:18px;padding:12px 14px;color:#496052;backdrop-filter:blur(6px)}.large-input{width:100%;min-height:220px;border:1px solid var(--line);border-radius:22px;padding:18px;resize:vertical;background:#fff}
.analysis-box{margin-top:16px;min-height:160px;border:1px dashed #c8d5ca;border-radius:22px;background:#fbfefb;padding:18px}.analysis-empty{color:var(--muted)}.analysis-pill{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;margin:0 8px 8px 0;font-size:14px;font-weight:600}.analysis-pill.ok{background:#e8f5ec;color:#0b7e33}.analysis-pill.info{background:#eef3ff;color:#2f5be7}
.chat-messages{min-height:240px;display:flex;flex-direction:column;gap:12px;margin-bottom:14px}.msg{max-width:78%;padding:14px 16px;border-radius:18px;line-height:1.55}.msg.tutor{background:#e9f4ec;align-self:flex-start}.msg.user{background:#fff;border:1px solid var(--line);align-self:flex-end}.chat-input-row{display:grid;grid-template-columns:1fr auto;gap:10px}
.upload-strip{margin-top:20px;background:#fff;border:1px solid var(--line);border-radius:20px;padding:16px 18px;color:#50645a}.dropzone{min-height:220px;border:2px dashed #c8d5ca;border-radius:26px;background:linear-gradient(180deg,#fbfefb,#f4f8f4);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;text-align:center;padding:24px;cursor:pointer}.dropzone.slim{min-height:150px;margin-top:14px}.dropzone input{display:none}.dropzone i{font-size:38px;color:var(--green)}.dropzone strong{font-size:22px}.dropzone span{max-width:460px;color:var(--muted);line-height:1.55}
.mini-form{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;margin-bottom:12px;align-items:center}
@media (max-width:1280px){.hero-card,.split-grid{grid-template-columns:1fr}.card-grid.four,.audio-controls-grid,.check-form .form-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.topbar,.section-hero.compact{flex-direction:column}.card-grid.three,.card-grid.four,.metric-grid,.mini-grid,.audio-controls-grid,.check-form .form-grid,.mini-form{grid-template-columns:1fr}.audio-control-card.wide{grid-column:auto}.hero-copy h2{font-size:36px}}

.record-state{display:flex;align-items:center;gap:12px;margin-top:14px;padding:12px 14px;background:#fff;border:1px solid var(--line);border-radius:16px}
.record-dot{width:12px;height:12px;border-radius:50%;background:#c9d5cc}
.record-dot.active{background:#d92f4c;box-shadow:0 0 0 8px rgba(217,47,76,.12)}
#audioLevelCanvas{width:100%;margin-top:12px;background:#f7faf7;border:1px solid var(--line);border-radius:16px}
.pill-upload{display:inline-flex;align-items:center;gap:10px;padding:14px 18px;border-radius:16px;background:#fff;border:1px solid var(--line);cursor:pointer;color:var(--green);font-weight:600;margin-top:10px}
.pill-upload input{display:none}
.media-preview-grid{display:grid;gap:10px;margin-top:14px}
.media-thumb{background:#fff;border:1px solid var(--line);border-radius:18px;padding:10px}
.media-thumb img,.media-thumb video{width:100%;border-radius:12px;display:block}
.notice-box{background:#fff8e8;border:1px solid #ecd79a;color:#7b6112;border-radius:18px;padding:14px 16px;margin-bottom:12px}

.music-player{width:100%;margin-top:14px}

.music-credits{margin-top:10px;font-size:13px;color:#5f7364;line-height:1.5;padding:10px 12px;background:#fff;border:1px solid var(--line);border-radius:14px}

.slider-note{margin-top:8px;font-size:12px;color:#5f7364;font-weight:600}
.audio-debug{margin-top:12px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:12px 14px;color:#50645a;line-height:1.5}

#audioSourceMode{width:100%;border:1px solid #d7e0d8;border-radius:14px;padding:12px;background:#fff}

.dashboard-bottom{margin-top:24px}
.coach-box{background:linear-gradient(135deg,rgba(10,122,49,.10),rgba(44,104,255,.08));border:1px solid rgba(10,122,49,.12);border-radius:22px;padding:18px 20px;line-height:1.6;color:#294234;font-weight:600}
.badge-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.priority-badge{display:inline-flex;align-items:center;gap:8px;padding:10px 12px;border-radius:999px;background:#f4f7f4;border:1px solid #d7e0d8;font-weight:700;color:#35503e}
.priority-badge strong{font-size:12px;opacity:.8}

.save-feedback{margin-bottom:16px;padding:14px 16px;border-radius:16px;background:#f4f7f4;border:1px solid #d7e0d8;color:#35503e;font-weight:700}
.save-feedback.ok{background:rgba(10,122,49,.10);border-color:rgba(10,122,49,.2)}
.save-feedback.warn{background:rgba(240,106,127,.10);border-color:rgba(240,106,127,.2)}

.role-status-badge{display:inline-flex;align-items:center;gap:8px;padding:12px 14px;border-radius:999px;background:#f4f7f4;border:1px solid #d7e0d8;font-weight:700;color:#35503e}
.auth-overlay{position:fixed;inset:0;background:rgba(14,24,18,.42);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px}
.auth-overlay.hidden{display:none}
.auth-card{width:min(560px,100%);background:#fff;border-radius:32px;padding:28px;border:1px solid rgba(10,122,49,.10);box-shadow:0 18px 60px rgba(17,35,23,.18)}
.auth-head h2{font-size:34px;line-height:1.1;margin:12px 0 8px}
.auth-head p{color:#5d7163;line-height:1.6}
.auth-tabs{display:flex;gap:10px;margin:18px 0}
.auth-tab{border:none;background:#edf2ee;color:#35503e;padding:12px 16px;border-radius:14px;font-weight:700;cursor:pointer}
.auth-tab.active{background:#0a7a31;color:#fff}
.auth-form{display:grid;gap:12px}
.auth-form.hidden{display:none}
.auth-form input,.auth-form select{border:1px solid #d7e0d8;border-radius:16px;padding:14px 16px;font-size:15px;background:#fff}
.auth-feedback{margin-top:16px;padding:12px 14px;border-radius:14px;background:#f4f7f4;color:#35503e;font-weight:700}
.auth-demo-box{margin-top:16px;padding:14px 16px;border-radius:18px;background:linear-gradient(135deg,rgba(10,122,49,.08),rgba(44,104,255,.08));color:#35503e;display:grid;gap:6px}
.side-logout{width:100%;margin-bottom:14px}
.hidden-by-role{display:none !important}
.role-panel-note{margin-top:12px;padding:14px 16px;border-radius:16px;background:#f4f7f4;border:1px solid #d7e0d8;color:#4d6354;line-height:1.5}

.auth-lock-note{padding:12px 14px;border-radius:14px;background:#f6f7fb;border:1px solid #d9dff0;color:#43516b;line-height:1.5;font-size:14px}
.demo-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:10px}
.demo-login-btn{border:none;background:#edf2ee;color:#35503e;padding:12px 16px;border-radius:14px;font-weight:700;cursor:pointer;text-align:left}
.demo-login-btn:hover{background:#e2ece4}
.demo-credentials{margin-top:12px;display:grid;gap:6px;font-size:13px;color:#4d6354}

.auth-feedback.error{background:rgba(240,106,127,.12);border:1px solid rgba(240,106,127,.22)}
.auth-feedback.ok{background:rgba(10,122,49,.10);border:1px solid rgba(10,122,49,.22)}

.demo-credentials-box{margin-bottom:12px}
.demo-credentials-box span{display:block}

.admin-form{display:grid;grid-template-columns:1.1fr 1.1fr 1fr .9fr auto;gap:10px;align-items:center}
.context-caption{font-size:14px;color:var(--muted);margin-bottom:12px}
.user-role-chip{display:inline-flex;padding:6px 10px;border-radius:999px;background:#eef3ef;border:1px solid var(--line);font-size:12px;font-weight:700;color:#35503e}
.db-item .meta-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.admin-form .pill-button,.mini-form .pill-button{justify-content:center}
@media (max-width:1280px){.admin-form{grid-template-columns:repeat(2,1fr)}}
@media (max-width:980px){.admin-form{grid-template-columns:1fr}}

.scanner-meta-row{margin-bottom:10px}
.scanner-kpi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.scanner-kpi{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px 16px}
.scanner-kpi span{display:block;color:var(--muted);font-size:13px;margin-bottom:6px}
.scanner-kpi strong{font-size:22px;color:#294234}
.analysis-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px 16px;margin-bottom:12px}
.analysis-card h4{margin:0 0 8px}
.analysis-card p{margin:0;color:#566b5f;line-height:1.55}
.scanner-match-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.match-item{background:#fff;border:1px solid var(--line);border-radius:18px;padding:12px 14px}
.match-item h5{margin:0 0 8px;font-size:15px}
.match-item p{margin:0;color:#566b5f;line-height:1.5;font-size:14px}
.warning-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:700;margin:0 8px 8px 0;background:#f4f7f4;border:1px solid #d7e0d8;color:#35503e}
.warning-chip.warn{background:rgba(240,106,127,.10);border-color:rgba(240,106,127,.25);color:#a53a55}
.warning-chip.ok{background:rgba(10,122,49,.10);border-color:rgba(10,122,49,.22);color:#0b7e33}
.inline-select{border:1px solid var(--line);border-radius:12px;padding:9px 12px;background:#fff;min-width:150px}
.admin-inline-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.compact-btn{padding:10px 12px}
.logic-meta .meta-row{margin-top:8px}
@media (max-width:980px){.scanner-kpi-grid,.scanner-match-grid{grid-template-columns:1fr}}
