@import"https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;700&display=swap";:root{--bg-canvas: #f5f2eb;--bg-panel: rgba(255, 255, 255, .86);--bg-panel-strong: #ffffff;--ink-strong: #1f2328;--ink-regular: #3a4651;--ink-muted: #70808f;--line-soft: rgba(26, 40, 53, .12);--brand: #1f9d84;--brand-deep: #157763;--warning: #db7d2d;--error: #c53a3a;--ok: #2a8f5f;--neutral: #8a98a6;--shadow-soft: 0 12px 32px rgba(27, 38, 49, .08);--radius-md: 14px;--radius-sm: 10px}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:Manrope,Noto Sans SC,Segoe UI,sans-serif;color:var(--ink-strong);background:radial-gradient(circle at 10% -10%,#e3f3eb 0%,transparent 40%),radial-gradient(circle at 100% 0%,#f7e8d6 0%,transparent 35%),var(--bg-canvas)}.container{width:min(1220px,100% - 2rem);margin-inline:auto}.app-shell{min-height:100vh}.app-header{position:sticky;top:0;z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#f5f2ebd9;border-bottom:1px solid var(--line-soft)}.app-header-inner{width:min(1220px,100% - 2rem);margin-inline:auto;min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:1rem}.brand{display:flex;align-items:center;gap:.85rem}.brand-mark{width:34px;height:34px;border-radius:11px;background:conic-gradient(from 120deg,#e9c46a,#1f9d84,#7bb661,#e9c46a 360deg);box-shadow:inset 0 0 0 1px #ffffff73}.brand h1{margin:0;font-size:1.05rem;line-height:1.1;letter-spacing:.01em}.brand p{margin:.18rem 0 0;font-size:.8rem;color:var(--ink-muted)}.status-chip{display:inline-flex;align-items:center;gap:.5rem;border:1px solid var(--line-soft);border-radius:999px;padding:.36rem .72rem;background:#ffffffb8;font-size:.82rem;color:var(--ink-regular)}.connection-status{display:inline-flex;align-items:center;gap:.46rem;border-radius:999px;border:1px solid var(--line-soft);background:#ffffffb8;padding:.24rem .62rem;font-size:.78rem}.connection-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.connection-connected .connection-dot{background:var(--ok)}.connection-reconnecting .connection-dot{background:var(--warning);animation:pulse-ring 1.1s ease-in-out infinite}.connection-disconnected .connection-dot{background:var(--error)}.status-dot{width:9px;height:9px;border-radius:50%;display:block}.status-dot-online{background:var(--ok)}.status-dot-offline{background:var(--error)}.app-main{padding-block:1.25rem 2rem}.dashboard-grid{display:grid;gap:1rem;grid-template-columns:1.1fr 1fr 1fr}.panel-settings{grid-column:1 / -1}.panel{background:var(--bg-panel);border:1px solid var(--line-soft);border-radius:var(--radius-md);padding:1rem;box-shadow:var(--shadow-soft)}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:.7rem;margin-bottom:.75rem}.panel h2{margin:0;font-size:1.02rem}.panel h3,.subheading{margin:0 0 .45rem;font-size:.92rem}.muted{margin:0 0 1rem;color:var(--ink-muted);font-size:.9rem}.badge{border-radius:999px;padding:.2rem .62rem;font-size:.72rem;border:1px solid transparent}.badge-warn{background:#db7d2d24;color:#8f4f18;border-color:#db7d2d66}.badge-ok{background:#2a8f5f24;color:#1d6a46;border-color:#2a8f5f61}.badge-neutral{background:#8a98a626;color:#556472;border-color:#8a98a666}.field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.8rem;font-size:.84rem;color:var(--ink-muted)}.field textarea,.field input{width:100%;border-radius:var(--radius-sm);border:1px solid var(--line-soft);padding:.7rem .75rem;font:inherit;color:var(--ink-strong);background:var(--bg-panel-strong);resize:vertical;min-height:100px}.field input{min-height:40px;resize:none}.field textarea:focus,.field input:focus{outline:2px solid rgba(31,157,132,.2);border-color:#1f9d8473}.btn-primary{border:0;border-radius:999px;padding:.62rem 1rem;font:inherit;font-weight:600;color:#fff;background:linear-gradient(135deg,var(--brand),var(--brand-deep));cursor:pointer}.btn-primary:disabled{cursor:not-allowed;opacity:.55}.btn-secondary,.btn-danger{border:1px solid var(--line-soft);border-radius:999px;padding:.6rem .92rem;font:inherit;font-weight:600;color:var(--ink-regular);background:#fff;cursor:pointer}.btn-danger{border-color:#c53a3a4d;color:#9f2a2a}.btn-small{padding:.45rem .72rem;font-size:.82rem}.button-row{display:flex;flex-wrap:wrap;gap:.5rem}.settings-grid{display:grid;gap:.85rem;grid-template-columns:repeat(3,minmax(0,1fr))}.settings-fieldset{min-width:0;border:1px solid var(--line-soft);border-radius:var(--radius-sm);padding:.78rem;background:#ffffff94}.settings-fieldset legend{display:flex;align-items:center;gap:.5rem;padding-inline:.2rem;font-size:.86rem;font-weight:700;color:var(--ink-strong)}.settings-state{border-radius:999px;border:1px solid rgba(219,125,45,.35);background:#db7d2d1f;color:#8f4f18;padding:.12rem .42rem;font-size:.68rem;font-weight:600}.settings-state-ok{border-color:#2a8f5f59;background:#2a8f5f21;color:#1d6a46}.field-compact{margin-bottom:.58rem}.settings-actions{display:flex;align-items:center;flex-wrap:wrap;gap:.55rem;margin-top:.9rem}.settings-save-state{min-height:1.2rem;color:var(--ok);font-size:.82rem}.panel-content{display:grid;gap:.5rem}.error-boundary{min-height:100vh;display:grid;align-content:center;justify-items:center;gap:.75rem;width:min(680px,100% - 2rem);margin:0 auto;text-align:center}.error-boundary h2{margin:0}.error-boundary p{margin:0;color:var(--ink-muted)}.error-boundary pre{margin:0;width:100%;max-height:220px;overflow:auto;text-align:left;border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:#ffffffb8;padding:.62rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.74rem}.feedback-box,.export-box{margin-top:.75rem;border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:#ffffffb8;padding:.72rem}.feedback-box h3,.export-box h3{margin:0 0 .45rem;font-size:.84rem}.feedback-stars{display:flex;gap:.24rem;margin-bottom:.45rem}.star-button{border:0;background:transparent;color:#b8c2cc;font-size:1.2rem;line-height:1;padding:.1rem;cursor:pointer}.star-button:disabled{cursor:not-allowed;opacity:.6}.star-selected{color:#f3b340}.feedback-success{margin:0;color:#1d6a46;font-size:.8rem}.audio-player{margin-top:.85rem;border:1px solid var(--line-soft);background:#ffffffb8;border-radius:var(--radius-sm);padding:.72rem;display:grid;gap:.6rem}.audio-controls{display:flex;flex-wrap:wrap;gap:.45rem}.audio-progress-track{height:8px;border-radius:999px;overflow:hidden;background:#70808f3d}.audio-progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#9bd6ff,#4683db)}.audio-meta{display:flex;justify-content:space-between;font-size:.78rem;color:var(--ink-muted)}.audio-volume{display:grid;gap:.36rem;font-size:.8rem;color:var(--ink-regular)}.audio-volume input[type=range]{width:100%}.stats-grid{display:grid;gap:.75rem}.stat{border:1px solid var(--line-soft);background:var(--bg-panel-strong);border-radius:var(--radius-sm);padding:.72rem .75rem}.stat h3{margin:0;font-size:.76rem;color:var(--ink-muted);letter-spacing:.01em;text-transform:uppercase}.stat p{margin:.36rem 0 0;font-size:1rem;font-weight:600}.meter{margin-top:.55rem;height:7px;border-radius:999px;background:#70808f33;overflow:hidden}.meter span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#88d39e,#1f9d84)}.pipeline-list{display:grid;gap:.4rem;margin-bottom:.8rem}.pipeline-item{border:1px solid var(--line-soft);border-radius:8px;font-size:.8rem;color:var(--ink-regular);padding:.38rem .55rem;background:#ffffffb8}.pipeline-item-current{border-color:#1f9d8480;background:#1f9d8417;color:#0e5d4f}.error-text{margin:0 0 .8rem;color:var(--error);font-size:.84rem}.code-block{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:#fafafae6;padding:.7rem;margin-bottom:.8rem}.code-block pre{margin:0;max-height:190px;overflow:auto;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.75rem;color:#27414c}.event-list{margin:0;padding-left:1rem;display:grid;gap:.26rem;color:var(--ink-regular);font-size:.83rem}.history-item{display:grid;gap:.12rem}.history-item strong{font-size:.72rem;letter-spacing:.02em;color:var(--ink-muted)}.voice-capture{display:grid;gap:.55rem;margin-bottom:.8rem}.voice-button{width:94px;height:94px;border-radius:50%;border:2px solid rgba(31,157,132,.38);background:#fff;position:relative;display:grid;place-items:center;margin:0 auto;cursor:pointer}.voice-button:disabled{cursor:not-allowed;opacity:.55}.voice-button-ring{position:absolute;top:7px;right:7px;bottom:7px;left:7px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#d7f6ed,#f7fbf9 72%);border:1px solid rgba(31,157,132,.24)}.voice-button-active .voice-button-ring{animation:pulse-ring 1.1s ease-in-out infinite}.voice-button-icon{position:relative;z-index:1;width:30px;height:30px;display:block;color:#1f9d84}.voice-button-icon svg{width:100%;height:100%;display:block}.voice-status-text{margin:0;text-align:center;font-size:.88rem;color:var(--ink-regular)}.voice-transcription-box{min-height:76px;border-radius:var(--radius-sm);border:1px dashed rgba(26,40,53,.22);background:#fffc;padding:.62rem}.voice-transcription-box p{margin:0}.voice-transcription-placeholder{color:var(--ink-muted);font-size:.83rem}.voice-transcription-partial{color:var(--ink-muted);font-size:.86rem}.voice-transcription-final{color:var(--ink-strong);font-weight:600;font-size:.9rem}.voice-error-text{margin:0;color:var(--error);font-size:.82rem}.voice-hint-text{margin:0;color:var(--ink-muted);font-size:.8rem}.device-status{margin-bottom:.8rem}.device-status-header{margin-bottom:.5rem}.device-status-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:.2rem .62rem;background:#8a98a624;color:#556472;border:1px solid rgba(138,152,166,.35);font-size:.72rem}.device-status-badge.is-active{background:#2a8f5f26;border-color:#2a8f5f59;color:#1d6a46}.device-status-grid{display:grid;gap:.55rem}.device-stat{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--bg-panel-strong);padding:.62rem .72rem}.device-stat h3{margin:0;font-size:.76rem;text-transform:uppercase;color:var(--ink-muted)}.device-stat p{margin:.36rem 0 0;font-size:.95rem;font-weight:600;line-height:1.45;overflow-wrap:anywhere}.device-scent{display:flex;align-items:center;gap:.45rem}.device-scent-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.device-plan-list{display:flex;flex-wrap:wrap;gap:.36rem;margin-top:.44rem}.device-plan-chip{border:1px solid rgba(31,157,132,.28);border-radius:999px;background:#1f9d841a;color:#0d5e4f;padding:.22rem .52rem;font-size:.78rem;font-weight:700;line-height:1.25}.charts-wrap{display:grid;gap:.62rem}.chart-card{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:#ffffffb8;padding:.62rem .7rem}.chart-card h3{margin:0 0 .45rem;font-size:.84rem}.chart-box{height:180px}.shutdown-list{list-style:none;display:grid;gap:.44rem;margin:0;padding:0}.shutdown-list li{display:grid;grid-template-columns:3.2rem minmax(0,1fr);gap:.2rem .55rem;align-items:center;border:1px solid var(--line-soft);border-radius:8px;background:#ffffffbd;padding:.44rem .5rem}.shutdown-list span{color:var(--ink-muted);font-size:.78rem;font-weight:700}.shutdown-list strong{min-width:0;font-size:.84rem;overflow-wrap:anywhere}.shutdown-list code{grid-column:2;color:#27414c;font-size:.74rem;overflow-wrap:anywhere}.duration-rule-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem;margin-bottom:.56rem}.duration-rule-grid span{border:1px solid var(--line-soft);border-radius:8px;background:#ffffffbd;color:var(--ink-muted);display:grid;gap:.12rem;padding:.45rem .5rem;font-size:.76rem}.duration-rule-grid strong{color:var(--ink-strong);font-size:1rem}.payload-preview{display:grid;gap:.42rem}.payload-preview code{border:1px solid var(--line-soft);border-radius:8px;background:#fafafaeb;color:#27414c;padding:.48rem .52rem;font-size:.78rem;overflow-wrap:anywhere}.duration-progress-track{height:10px;border-radius:999px;background:#70808f3d;overflow:hidden}.duration-progress-track span{display:block;height:100%;background:linear-gradient(90deg,#84d7c6,#1f9d84)}.rhythm-pill{border-radius:999px;padding:.36rem .68rem;display:inline-flex;align-items:center;justify-content:center;font-size:.78rem;text-transform:capitalize;border:1px solid rgba(31,157,132,.28);color:#0d5e4f;background:#1f9d841c}.rhythm-gradual{animation:rhythm-gradual 2.1s ease-in-out infinite}.rhythm-pulse{animation:rhythm-pulse .9s ease-in-out infinite}.rhythm-intermittent{animation:rhythm-intermittent 1.4s steps(2,jump-none) infinite}@keyframes pulse-ring{0%{transform:scale(1);opacity:1}50%{transform:scale(1.06);opacity:.8}to{transform:scale(1);opacity:1}}@keyframes rhythm-gradual{0%{opacity:.65}50%{opacity:1}to{opacity:.65}}@keyframes rhythm-pulse{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes rhythm-intermittent{0%{opacity:1}49%{opacity:1}50%{opacity:.35}to{opacity:.35}}@media (max-width: 1080px){.dashboard-grid{grid-template-columns:1fr 1fr}.settings-grid{grid-template-columns:1fr}.panel-command{grid-column:1 / -1}}@media (max-width: 760px){.app-header-inner{flex-direction:column;align-items:flex-start;justify-content:center;padding-block:.65rem}.dashboard-grid{grid-template-columns:1fr}.panel-command{grid-column:auto}}
