:root{--amber: #c07820;--amber-l: #f0e4cc;--amber-m: #e8c880;--dark: #2e1e08;--gray: #7a6a54;--bg: #f5ede0;--card: #fffaf3;--border: #e0d0b0;--green: #b5d6a7;--red: #b04030;--font-system: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}button,input,select,textarea{font-family:inherit}html,body{height:100%}body{font-family:var(--font-system);background:var(--bg);color:var(--dark);height:100vh;height:100dvh;overflow:hidden;-webkit-font-smoothing:antialiased}#app{height:100dvh;max-width:920px;margin:0 auto;box-shadow:0 0 20px #0000000a;overflow:hidden;display:flex;flex-direction:column}.app-shell{display:flex;flex-direction:column;height:100%;min-height:0;flex:1}.sidebar{width:100%;box-sizing:border-box;flex-shrink:0;background:var(--card);border-bottom:1px solid var(--border);display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;gap:6px}.sb-brand{padding:2px 4px 8px;flex:0 0 100%}.sb-brand .bn{font-weight:800;letter-spacing:-.03em;font-size:22px;color:var(--amber);display:block}.nav-item{display:flex;flex:1 1 0;align-items:center;justify-content:center;gap:9px;padding:10px 12px;border-radius:10px;font-size:14px;font-weight:600;color:var(--dark);cursor:pointer;border:none;background:transparent;text-align:center;transition:background .15s,color .15s;min-width:0}.nav-item:hover{background:var(--bg)}.nav-item.on{background:var(--amber-l);color:var(--amber);font-weight:700}.nav-item .ni-ic{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 22px;line-height:1}.nav-item>span:last-child{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-svg{width:22px;height:22px;display:block;overflow:visible}.nav-svg .thin{fill:none;stroke:#151515;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round}.nav-svg .ink{fill:#151515;stroke:#151515;stroke-width:1.2;stroke-linejoin:round}.nav-svg .paper{fill:#f7f7f7;stroke:#151515;stroke-width:1.7;stroke-linejoin:round}.nav-svg .accent-red{fill:#ff4c38;stroke:#151515;stroke-width:1.5;stroke-linejoin:round}.nav-svg .accent-blue{fill:#5bd0ff;stroke:#151515;stroke-width:1.5;stroke-linejoin:round}.nav-svg .accent-green{fill:#51d26c;stroke:#151515;stroke-width:1.5;stroke-linejoin:round}.main{flex:1;min-width:0;min-height:0;overflow-y:auto}.page{padding:16px 14px calc(16px + env(safe-area-inset-bottom));max-width:none}@media (max-width: 700px) and (orientation: portrait){.sidebar{padding:calc(5px + env(safe-area-inset-top)) 6px 5px;gap:2px}.sb-brand{padding:1px 6px 5px}.nav-item{flex-direction:column;gap:3px;padding:6px 2px;min-height:46px;font-size:10px;font-weight:700;border-radius:10px}.nav-item .ni-ic{width:23px;height:23px;flex-basis:23px}.nav-svg{width:23px;height:23px}}@media (orientation: landscape) and (max-height: 500px){.sidebar{padding:5px calc(8px + env(safe-area-inset-right)) 5px calc(8px + env(safe-area-inset-left));gap:4px}.sb-brand{padding:1px 6px 4px}.nav-item{flex-direction:row;gap:6px;padding:6px 8px;min-height:44px;font-size:11px;font-weight:700}.page{display:grid;grid-template-columns:1fr 1fr;gap:0 14px;align-content:start;padding:12px 16px 18px}.page>.span-full{grid-column:1 / -1}}@media (max-width: 379px){.page{padding:12px}.card{padding:12px;margin-bottom:10px;border-radius:12px}}.card{background:var(--card);border-radius:14px;border:1px solid var(--border);padding:16px;margin-bottom:14px}.card-title{font-size:15px;font-weight:800;color:var(--dark);margin-bottom:8px}.card-note{font-size:11px;color:var(--gray);line-height:1.6;margin-bottom:12px}.card h2{font-size:15px;margin-bottom:8px;color:var(--dark)}.card p,.card li{font-size:14px;line-height:1.5;color:var(--gray)}.muted{font-size:13px;color:var(--gray)}.btn{display:inline-block;padding:12px 18px;border-radius:10px;border:none;font-weight:700;font-size:14px;cursor:pointer;font-family:inherit;background:var(--amber);color:#fff8ec}.btn.secondary,.btn-ghost{background:var(--amber-l);color:var(--amber);border:1.5px solid var(--amber-m)}.btn:disabled{opacity:.5;cursor:not-allowed}.field{width:100%;margin-bottom:12px}.field>label{display:block;font-size:11px;font-weight:700;color:var(--gray);margin-bottom:5px;letter-spacing:.06em;text-transform:uppercase}.field>input:not([type=radio]):not([type=checkbox]),.field>select,input.field,textarea.field{width:100%;padding:10px 14px;border-radius:10px;border:1.5px solid var(--border);background:#fffdf8;font-size:14px;color:var(--dark);font-family:inherit;outline:none}.toast{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);background:var(--dark);color:#fff;padding:10px 16px;border-radius:10px;font-size:13px;z-index:100;max-width:88vw;display:none}.connect-page{padding:32px 24px;text-align:center;max-width:480px;margin:0 auto}.connect-page h1{color:var(--amber);font-size:28px;margin-bottom:12px}.connect-page p{color:var(--gray);line-height:1.6;margin-bottom:20px}.list-empty{text-align:center;padding:24px;color:var(--gray);font-size:14px}.usage-card{background:linear-gradient(145deg,#fffaf3,#f7ead5)}.usage-title{font-size:15px;font-weight:800;color:var(--dark);margin-bottom:8px}.usage-count{display:flex;align-items:baseline;gap:4px;margin-bottom:9px}.usage-count .used{font-size:30px;font-weight:800;color:var(--dark);letter-spacing:-.02em}.usage-count .sep,.usage-count .total{font-size:20px;font-weight:700;color:var(--gray)}.usage-count .unit{font-size:11px;color:var(--gray);margin-left:4px}.usage-bar{height:8px;border-radius:6px;background:#ecdcc2;overflow:hidden}.usage-fill{height:100%;border-radius:6px;background:var(--amber);transition:width .4s ease,background .3s}.usage-fill.warn{background:#d98a1e}.usage-fill.full{background:var(--red)}.paused-banner{margin-bottom:14px;padding:12px 14px;background:#fdf6e8;border:1.5px solid #c97b5c;border-radius:10px}.dev-head{display:flex;align-items:center;gap:12px;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border)}.dev-head-info{display:flex;flex-direction:column;gap:5px;min-width:0;flex:1;align-items:flex-start}.usage-scope{margin:0;font-size:16px;font-weight:800;color:var(--amber);background:var(--amber-l);padding:6px 14px;border-radius:20px;letter-spacing:-.01em}.dev-head-gid{font-size:12px;color:var(--gray);font-weight:600;padding-left:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.dev-head-gid .gid-val{color:var(--dark);font-weight:700}.fam-edit,.dev-rename{background:transparent;border:1px solid var(--border);color:var(--gray);font-size:11px;font-weight:700;padding:5px 10px;border-radius:7px;cursor:pointer;flex-shrink:0}.device-list{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.device-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;border:1px solid var(--border);background:#fffdf8}.dev-status-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;background:#c0a870}.dev-status-dot.online{background:#51d26c}.dev-name{font-size:13px;font-weight:700;color:var(--dark)}.dev-meta{font-size:12px;color:var(--gray);margin-top:2px}.dev-meta .online-text{font-weight:700;color:#3a7028}.add-another{font-size:10px;color:var(--gray);line-height:1.5}.member-chips{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0 2px}.member-chip{display:inline-flex;align-items:center;gap:6px;background:#fdf6e8;border:1px solid var(--amber-m);border-radius:14px;padding:5px 4px 5px 8px;font-size:13px;font-weight:600;color:var(--dark);line-height:1}.member-chip .mc-name{font-weight:600}.member-chip .mc-voice{font-size:12px;color:var(--gray);font-weight:500;margin-left:2px;letter-spacing:.01em}.member-chip .chip-x,.member-chip .mc-del{border:none;background:transparent;color:var(--gray);font-size:14px;cursor:pointer;width:20px;height:20px;border-radius:50%;padding:0;margin-left:2px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.member-chip .chip-x:hover,.member-chip .mc-del:hover{background:#00000014;color:var(--red)}.add-member-chip{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1.5px dashed var(--amber-m);border-radius:14px;padding:5px 12px;font-size:12px;font-weight:700;color:var(--amber);cursor:pointer;line-height:1.4}.voice-pick{background:#fff;border:1px solid var(--border);border-radius:10px;padding:6px;display:flex;flex-direction:column;gap:2px}.voice-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;cursor:pointer;transition:background .12s}.voice-row:hover{background:#fdf6e8}.voice-row input[type=radio]{width:16px;height:16px;flex-shrink:0;accent-color:var(--amber);cursor:pointer;margin:0}.voice-label{display:flex;align-items:center;gap:6px;flex:1;cursor:pointer;min-width:0;margin:0;font-size:inherit;font-weight:inherit;color:inherit;letter-spacing:normal;text-transform:none}.vl-emoji{font-size:16px;flex-shrink:0}.vl-name{font-size:13px;font-weight:600;color:var(--dark);white-space:nowrap}.vl-play{flex-shrink:0;background:transparent;border:1px solid var(--amber-m);width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--amber);font-size:12px;cursor:pointer;padding:0;transition:background .12s,transform .1s;position:relative;z-index:1}.vl-play:hover{background:#fdf6e8}.vl-play:active{transform:scale(.9)}.vl-play:disabled,.vl-play.playing{opacity:.55;cursor:wait}.session-card .signout-btn{width:100%;margin-top:4px}.voice-disclaimer{font-size:10px;color:var(--gray);margin-top:8px}.add-form-actions{display:flex;gap:8px}.add-form-actions .btn{flex:1}.ai-help{background:linear-gradient(145deg,#fffaf3,#f7ead5)}.ai-help-log{display:flex;flex-direction:column;gap:8px;min-height:92px;max-height:240px;overflow-y:auto;padding:10px;border:1px solid var(--border);border-radius:12px;background:#fff;margin-bottom:10px}.ai-msg{max-width:92%;padding:9px 11px;border-radius:12px;font-size:12px;line-height:1.55;white-space:pre-wrap}.ai-msg.bot{align-self:flex-start;background:var(--amber-l);color:var(--dark)}.ai-msg.user{align-self:flex-end;background:var(--amber);color:#fff}.ai-quick{display:flex;flex-wrap:wrap;gap:6px;padding-bottom:8px}.ai-quick button{min-height:40px;flex:0 1 auto;max-width:100%;white-space:normal;line-height:1.3;padding:8px 10px;border-radius:10px;border:1px solid var(--amber-m);background:#fffdf8;color:var(--amber);font:700 11px var(--font-system);cursor:pointer}.ai-compose{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:stretch}.ai-compose input{min-width:0;padding:11px 12px;border:1.5px solid var(--amber-m);border-radius:11px;background:#fff;color:var(--dark);font:16px var(--font-system);outline:none;box-shadow:0 1px #2e1e080a}.ai-compose input::placeholder{color:#a89070}.ai-compose input:focus{border-color:var(--amber);box-shadow:0 0 0 3px #c078202e}.ai-compose button{min-width:74px;border:none;border-radius:11px;background:var(--amber);color:#fff;font:700 13px var(--font-system);cursor:pointer}.site-footer{margin:18px 0 24px;padding:14px 4px 0;border-top:1px solid var(--border);text-align:center;color:var(--gray);font-size:10px;line-height:1.8}.footer-links{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 14px;margin-bottom:6px}.footer-links a{color:var(--amber);text-decoration:none;font-weight:600}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:none;align-items:center;justify-content:center;padding:20px;background:#2e1e086b}.modal-mask.on{display:flex}.modal-box{width:min(360px,100%);background:var(--card);border-radius:16px;border:1px solid var(--border);padding:20px;box-shadow:0 12px 40px #2e1e0838}.modal-title{font-size:16px;font-weight:800;margin-bottom:12px}.modal-err{font-size:12px;color:var(--red);min-height:16px;margin:6px 0 12px}.modal-actions{display:flex;gap:8px}.modal-actions .btn{flex:1}.wifi-root{min-height:100dvh;overflow-y:auto;background:var(--bg);padding:20px 14px calc(20px + env(safe-area-inset-bottom));display:flex;align-items:flex-start;justify-content:center}.qr-shell{width:min(420px,100%)}.qr-brand{font-weight:800;font-size:20px;color:var(--amber);letter-spacing:-.03em;margin-bottom:12px}.qr-title{font-size:20px;font-weight:800;color:var(--dark);margin-bottom:8px}.qr-copy{font-size:13px;color:var(--gray);line-height:1.5;margin-bottom:16px}.qr-step{display:flex;gap:10px;margin-bottom:16px}.qr-step-num{width:22px;height:22px;border-radius:50%;background:var(--amber);color:#fff;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px}.qr-step-body{flex:1;min-width:0}.qr-step-title{font-size:13px;font-weight:800;margin-bottom:8px}.device-sel{display:flex;flex-direction:column;gap:6px}.device-opt{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;border:1.5px solid var(--border);background:#fffdf8;cursor:pointer}.device-opt.on{border-color:var(--amber);background:var(--amber-l)}.device-opt-icon{width:32px;height:32px;border-radius:8px;background:var(--bg);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:var(--amber);flex-shrink:0}.device-opt-name{font-size:13px;font-weight:700;color:var(--dark)}.device-opt-loc{font-size:11px;color:var(--gray);margin-top:2px}.device-opt-check{width:16px;height:16px;border-radius:50%;border:2px solid var(--border);flex-shrink:0}.device-opt.on .device-opt-check{border-color:var(--amber);background:var(--amber);box-shadow:inset 0 0 0 3px #fffdf8}.wifi-state{display:none;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:24px 8px;min-height:180px;justify-content:center}.wifi-state-icon{width:52px;height:52px;border-radius:50%;background:var(--amber-l);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;color:var(--amber)}.wifi-state-icon.ok{background:#e4f5df;color:#3a7028}.wifi-state-icon.error{background:#fde8e4;color:var(--red)}.wifi-spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--amber);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.wifi-state-title{font-size:18px;font-weight:800}.wifi-state-copy{font-size:13px;color:var(--gray);line-height:1.5}.wifi-actions{display:flex;gap:8px;width:100%;margin-top:8px}.wifi-actions .btn{flex:1}.loading-row,.error-row{font-size:12px;color:var(--gray);line-height:1.6;padding:10px 2px}.error-row{color:var(--red)}
