.chat-err{position:fixed;top:8px;right:80px;z-index:30;background:var(--bg);color:var(--err);border:1px solid var(--err);padding:4px 10px;border-radius:6px}.chat-rail{position:fixed;top:0;right:0;bottom:0;width:64px;z-index:20;background:var(--bg);border-left:1px solid var(--line);display:flex;flex-direction:column;align-items:center;padding:8px 0;box-sizing:border-box;pointer-events:none}.chat-rail>*{pointer-events:auto}.chat-bubbles{flex:1;min-height:0;width:100%;display:flex;flex-direction:column;align-items:center;gap:10px;padding:28px 0 8px;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none;outline:none;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 40px);mask-image:linear-gradient(to bottom,transparent 0,#000 40px)}.chat-bubbles::-webkit-scrollbar{display:none}.chat-bubble{position:relative;flex:none;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--soft);color:var(--fg);font:inherit;font-weight:600;cursor:pointer}.chat-bubble.chat-on{border-color:var(--teal);box-shadow:0 0 0 2px var(--teal)}.chat-dot{position:absolute;top:-2px;right:-2px;width:12px;height:12px;border-radius:50%;background:#e53935;border:2px solid var(--bg)}.chat-archive{flex:none;width:36px;height:36px;margin-top:8px;border-radius:50%;border:1px solid var(--teal);background:transparent;font-size:16px;cursor:pointer}.chat-archive.chat-on{background:var(--teal)}.chat-new{flex:none;width:44px;height:44px;margin-top:8px;border-radius:50%;border:none;background:var(--teal);color:#fff;font-size:22px;cursor:pointer}.chat-win{position:fixed;right:72px;bottom:16px;z-index:25;display:flex;flex-direction:column;background:var(--bg);color:var(--fg);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 30px #00000040;padding:8px;box-sizing:border-box}.chat-win.chat-full{top:0;left:0;right:0;bottom:0;width:auto;height:auto;border:none;border-radius:0;z-index:40}.chat-grip{position:absolute;top:0;left:0;width:16px;height:16px;cursor:nwse-resize;touch-action:none;background:linear-gradient(135deg,var(--dim) 0 2px,transparent 2px 5px,var(--dim) 5px 7px,transparent 7px);border-top-left-radius:10px}.chat-head{display:flex;align-items:center;gap:8px;padding:0 4px 8px}.chat-head strong{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-msgs{flex:1;min-height:0;list-style:none;padding:0;margin:0 0 8px;display:flex;flex-direction:column;gap:8px;overflow:auto}.chat-msgs>li{border:1px solid var(--line);border-radius:8px;padding:6px 10px;max-width:90%;overflow-wrap:anywhere}.chat-msgs>li p{margin:.3em 0;white-space:pre-wrap}.chat-msgs>li pre{overflow:auto;background:var(--soft);padding:6px;border-radius:6px}.chat-user{align-self:flex-end;background:var(--soft)}.chat-assistant{align-self:flex-start}.chat-error{border-color:var(--err);color:var(--err)}.chat-msgs small{color:var(--dim)}.chat-form{display:flex;gap:8px;align-items:flex-end}.chat-form textarea{flex:1;font:inherit;resize:none;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none;line-height:1.4}.chat-form textarea::-webkit-scrollbar{display:none}.chat-atts{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-wrap:wrap;gap:8px}.chat-att{display:flex;flex-direction:column;align-items:center;gap:2px;width:72px;font-size:12px;border:1px solid var(--line);border-radius:6px;padding:4px}.chat-att img{width:56px;height:56px;object-fit:cover;border-radius:4px}.chat-att-icon{width:56px;height:56px;display:flex;align-items:center;justify-content:center;font-size:32px;background:var(--soft);border-radius:4px}.chat-att progress{width:100%;height:6px}.chat-att-error{border-color:var(--err)}.rich{margin:.5em 0;max-width:100%}.rich figcaption{font-weight:600;margin-bottom:4px}.rich-list{margin:.2em 0;padding-left:1.4em}.rich-scroll{overflow:auto}.rich-table{border-collapse:collapse;font-size:.9em}.rich-table th,.rich-table td{border:1px solid var(--line);padding:3px 8px;text-align:left;white-space:pre-wrap}.rich-table th{background:var(--soft)}.rich-svg{width:100%;max-width:420px;height:auto}.rich-pie{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.rich-legend{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.85em}.rich-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px}.chat-msgs li .rich-list li{border:none;padding:0;max-width:none}.rich-opts{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0}.rich-opt{font:inherit;padding:6px 14px;border:1px solid var(--teal);background:var(--bg);color:var(--fg);border-radius:16px;cursor:pointer}.rich-opt:hover:not(:disabled){background:var(--teal);color:#fff}.rich-opt:disabled{cursor:default;opacity:.5}.rich-opt.rich-picked{opacity:1;background:var(--teal);color:#fff}.rich-body{white-space:pre-wrap;margin:.3em 0}.chat-card{border:1px solid #d97706;background:#fffbeb;color:#78350f;border-radius:8px;padding:8px 12px}.chat-status{border-bottom:1px solid var(--line);padding:6px 12px;font-size:13px}.chat-status summary{cursor:pointer;font-weight:600}.chat-status ul{margin:6px 0 0;padding:0;list-style:none;display:grid;gap:4px}.chat-status li{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline}.chat-story{margin:6px 0 0;display:flex;flex-wrap:wrap;gap:6px;align-items:baseline}.chat-wp-state{color:var(--dim)}.rich-wp{display:grid;gap:6px}.rich-wp label{display:grid;gap:2px;font-size:13px;color:var(--dim)}.rich-wp input,.rich-wp select,.rich-wp textarea{font:inherit;color:var(--fg, inherit)}.rich-wp-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}.rich-opt .rich-desc{display:block;font-size:.8em;opacity:.8;margin-top:2px}.rich-opts:has(.rich-desc){flex-direction:column;align-items:stretch}.rich-opts:has(.rich-desc) .rich-opt{text-align:left;border-radius:10px}.chat-links{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:4px}.chat-link{display:flex;gap:6px;align-items:center;font-size:13px;border:1px solid var(--line);border-radius:6px;padding:4px 8px}.chat-link-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-slash{list-style:none;margin:0 0 8px;padding:0;max-height:160px;overflow-y:auto;border:1px solid var(--line);border-radius:6px}.chat-slash button{display:block;width:100%;text-align:left;background:none;border:0;padding:6px 8px;font:inherit;cursor:pointer}.chat-slash button:hover,.chat-slash button:focus{background:var(--soft)}.chat-slash li[aria-selected=true] button{background:var(--line)}.chat-at{list-style:none;margin:0 0 8px;padding:4px;max-height:160px;overflow-y:auto;border:1px solid var(--line);border-radius:6px;font-size:13px}.chat-at li{padding:4px 8px;border-radius:4px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-at li.chat-at-on{background:var(--line)}.chat-at li.chat-at-empty{cursor:default;opacity:.7}.chat-card-actions{display:flex;gap:8px;margin:6px 0 0}.chat-quota{margin-top:6px}.chat-quota p{margin:.2em 0}.chat-win button{border:1px solid var(--line);background:var(--bg);border-radius:6px;padding:3px 10px}.chat-win button:hover{background:var(--soft)}.chat-win textarea,.chat-win input,.chat-win select{border:1px solid var(--line);background:var(--bg);border-radius:6px;padding:6px 9px}.chat-form button[type=submit]{background:var(--teal);border-color:var(--teal);color:var(--teal-fg)}.chat-del{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;color:var(--err)}.chat-readonly{margin:6px 0;padding:6px 10px;border-radius:6px;background:var(--soft);color:var(--dim2);font-size:.85rem}.chat-win textarea:read-only{background:var(--soft);color:var(--dim2);cursor:not-allowed}.chat-win button:disabled{opacity:.5;cursor:not-allowed}.chat-head>button{width:32px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;flex:none}.chat-blocked{background:var(--warn-soft);color:var(--work)}.chat-route{display:block;color:var(--dim);font-size:.75rem;margin-top:2px}.cal{color:var(--fg)}.cal-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}.cal-bar h2{margin:0;font-size:1.15rem;flex:1;min-width:8em}.cal-bar button{background:none;border:1px solid var(--line);color:inherit;border-radius:6px;padding:4px 10px;cursor:pointer}.cal-views{display:inline-flex;gap:4px}.cal-views .on{background:var(--teal);border-color:var(--teal);color:#fff}.cal-head,.cal-row{display:grid;grid-template-columns:4.5em repeat(7,minmax(0,1fr))}.cal-head span{text-align:center;padding:4px 0;color:var(--dim);font-size:.85rem}.cal-wk{font-size:.75rem;color:var(--dim);padding:6px 4px;border-top:1px solid var(--line)}.cal-cell{text-align:left;min-height:84px;border:0;border-top:1px solid var(--line);border-left:1px solid var(--line);background:var(--bg);color:inherit;padding:4px;display:flex;flex-direction:column;gap:2px;cursor:pointer;overflow:hidden}.cal-cell.dim{color:var(--dim)}.cal-top{display:flex;align-items:center;gap:4px;min-height:20px;flex:none;min-width:0}.cal-cell.today .cal-num{background:var(--teal);color:var(--teal-fg);border-radius:10px;padding:0 6px}.cal-cell.sel{outline:2px solid var(--teal);outline-offset:-2px}.cal-cell.holiday .cal-num{color:var(--hol)}.cal-tag{font-size:.72rem;border-radius:4px;padding:0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.cal-tag.holiday{color:var(--hol);border:1px solid var(--hol)}.cal-tag.workday{color:var(--work);border:1px solid var(--work)}.cal-item{font-size:.75rem;background:var(--teal);color:var(--teal-fg);border-radius:4px;padding:0 4px}.cal-skel{height:12px;border-radius:4px;background:linear-gradient(90deg,var(--line),transparent,var(--line));background-size:200% 100%;animation:cal-sh 1.2s linear infinite}@keyframes cal-sh{to{background-position:-200% 0}}.cal-admin{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:8px;font-size:.85rem}.cal-admin button{background:none;border:1px solid var(--line);color:inherit;border-radius:6px;padding:2px 8px;cursor:pointer}.cal-list{list-style:none;padding:0;margin:0}.cal-list li{border-top:1px solid var(--line);padding:6px 0}.cal-day{display:flex;flex-direction:column;gap:4px;padding:8px 0}.cal-empty{color:var(--dim);margin:0}@media (max-width:768px){.cal-head,.cal-row{grid-template-columns:3.2em repeat(7,minmax(0,1fr))}.cal-cell{min-height:56px;padding:2px}.cal-tag{display:none}.cal-cell.holiday,.cal-cell.workday{background:color-mix(in srgb,var(--hol) 10%,var(--bg))}}.cal-admin input{border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:6px;padding:3px 9px;font:inherit;min-width:0}.cal-admin input::placeholder{color:var(--dim)}.cal-admin button{background:var(--bg)}.cal-admin button:hover{background:var(--soft)}.cal-admin [role=status]{color:var(--dim2)}:root{--bg:#ffffff;--soft:#f1f4f6;--line:#d9dee3;--fg:#1b2127;--dim:#8a949e;--dim2:#5b6670;--teal:#0f8f80;--teal-fg:#ffffff;--teal-soft:#e0f3f0;--hol:#c0392b;--work:#b7791f;--err:#c0392b;--err-soft:#fbe9e6;--ok:#1d7a3e;--ok-soft:#e3f4e8;--warn-soft:#fbf0d6;--info:#2457b3;--info-soft:#e4ecfa;--dot:#e53935;--shadow:0 8px 30px rgba(0,0,0,.25);--font:system-ui,-apple-system,"Segoe UI","Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,monospace;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg:#14181c;--soft:#1d2329;--line:#333b43;--fg:#e6eaee;--dim:#6b7580;--dim2:#9aa5b0;--teal:#2dd4bf;--teal-fg:#06221f;--teal-soft:#10312e;--hol:#ff8a7a;--work:#f0b429;--err:#ff8a7a;--err-soft:#3a1c18;--ok:#5bd081;--ok-soft:#14301f;--warn-soft:#33270e;--info:#82a8ff;--info-soft:#15233f;--shadow:0 8px 30px rgba(0,0,0,.6);color-scheme:dark}}:root[data-theme=dark]{--bg:#14181c;--soft:#1d2329;--line:#333b43;--fg:#e6eaee;--dim:#6b7580;--dim2:#9aa5b0;--teal:#2dd4bf;--teal-fg:#06221f;--teal-soft:#10312e;--hol:#ff8a7a;--work:#f0b429;--err:#ff8a7a;--err-soft:#3a1c18;--ok:#5bd081;--ok-soft:#14301f;--warn-soft:#33270e;--info:#82a8ff;--info-soft:#15233f;--shadow:0 8px 30px rgba(0,0,0,.6);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font);font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--teal);outline-offset:2px}h1,h2,h3,h4{margin:0}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.shell{height:100%;display:flex;flex-direction:column;padding-right:64px}.top{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid var(--line);min-height:52px;flex:none}.logo{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;color:var(--fg);border:0;background:none;padding:0;text-decoration:none}.logo small{font-weight:400;color:var(--dim);letter-spacing:.05em;font-size:11px}.top .sp{flex:1}.ibtn{border:1px solid var(--line);background:var(--bg);border-radius:8px;height:34px;min-width:34px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;gap:6px}.ibtn:hover{background:var(--soft)}.av{width:28px;height:28px;border-radius:50%;background:var(--teal);color:var(--teal-fg);display:grid;place-items:center;font-weight:700;font-size:12px}.av-img{object-fit:cover;background:var(--soft);display:block}.banner{display:flex;gap:10px;align-items:center;padding:6px 14px;background:var(--warn-soft);color:var(--work);font-size:13px;border-bottom:1px solid var(--line);flex:none}.banner .sp{flex:1}.banner a{color:inherit;font-weight:600}.view{flex:1;min-height:0;overflow:auto;padding:16px;scrollbar-width:none;-ms-overflow-style:none}.view::-webkit-scrollbar{display:none}.page{max-width:1100px;margin:0 auto;display:flex;flex-direction:column;gap:16px}.page-head{display:flex;align-items:center;gap:10px}.page-head h2{font-size:1.15rem;flex:1}.center{min-height:100%;display:grid;place-items:center;padding:16px}.auth{width:min(380px,100%);display:flex;flex-direction:column;gap:12px}.chip{display:inline-flex;align-items:center;gap:5px;padding:1px 9px;border-radius:99px;font-size:12px;border:1px solid var(--line);background:var(--soft);color:var(--dim2);white-space:nowrap;font-family:inherit}button.chip{cursor:pointer}.chip.t{background:var(--teal-soft);color:var(--teal);border-color:transparent}.chip.ok{background:var(--ok-soft);color:var(--ok);border-color:transparent}.chip.err{background:var(--err-soft);color:var(--err);border-color:transparent}.chip.warn{background:var(--warn-soft);color:var(--work);border-color:transparent}.chip.info{background:var(--info-soft);color:var(--info);border-color:transparent}.dt{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}.btn{border:1px solid var(--line);background:var(--bg);border-radius:6px;padding:4px 12px}.btn:hover:not(:disabled){background:var(--soft)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.pri{background:var(--teal);border-color:var(--teal);color:var(--teal-fg)}.btn.pri:hover:not(:disabled){background:var(--teal);filter:brightness(1.08)}.btn.dng{border-color:var(--err);color:var(--err)}.btn.dng.fill{background:var(--err);color:#fff}.btn.sm{padding:1px 9px;font-size:12px}.field{display:flex;flex-direction:column;gap:4px}.field>span{font-size:12px;color:var(--dim2)}.field input,.field select,.field textarea,.input{border:1px solid var(--line);background:var(--bg);border-radius:6px;padding:6px 9px;width:100%}.field textarea{font-family:var(--mono);font-size:12.5px;resize:vertical}.dim{color:var(--dim2)}.small{font-size:12px}.mono{font-family:var(--mono);font-size:12.5px}.row{display:flex;align-items:center;gap:8px}.row.wrap{flex-wrap:wrap}.row.sb{justify-content:space-between}.err-text{color:var(--err);margin:0}.switch{position:relative;width:38px;height:22px;border-radius:99px;border:0;background:var(--line);flex:none;padding:0}.switch:after{content:"";position:absolute;left:2px;top:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .12s}.switch[aria-checked=true]{background:var(--teal)}.switch[aria-checked=true]:after{left:18px}.switch:disabled{opacity:.45;cursor:not-allowed}.seg{display:inline-flex;border:1px solid var(--line);border-radius:6px;overflow:hidden;flex:none}.seg button{border:0;background:var(--bg);padding:3px 11px;font-size:12px;color:var(--dim2)}.seg button+button{border-left:1px solid var(--line)}.seg button[aria-pressed=true]{background:var(--teal);color:var(--teal-fg)}.menu{position:absolute;right:78px;top:50px;width:280px;background:var(--bg);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:12px;z-index:40;display:flex;flex-direction:column;gap:10px}.menu .btn{text-align:left}.menu hr{border:0;border-top:1px solid var(--line);width:100%;margin:0}.stack{display:flex;flex-direction:column;gap:16px}@media (min-width: 1000px){.page.cols{max-width:1500px}.stack.cols{display:block;column-count:2;column-gap:16px}.stack.cols>.card{break-inside:avoid;margin-bottom:16px}}.card{border:1px solid var(--line);border-radius:12px;background:var(--bg);padding:16px;display:flex;flex-direction:column;gap:16px;min-width:0}.card.danger{border-color:var(--err)}.card-foot{display:none}.card-head{display:flex;align-items:flex-start;gap:12px}.card-head>div:first-child{flex:1;min-width:0}.card-head h2{font-size:15px}.card-head p{margin:2px 0 0;font-size:12px;color:var(--dim2)}.card-head .right{display:flex;align-items:center;gap:8px;flex:none}.grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.mini{border:1px solid var(--line);border-radius:10px;padding:11px 12px;display:flex;flex-direction:column;gap:8px;background:var(--soft);min-width:0}.mini .grow{flex:1}.bar{height:6px;background:var(--line);border-radius:9px;overflow:hidden}.bar i{display:block;height:100%;background:var(--teal)}.bar i.hi{background:var(--work)}.kv{display:grid;grid-template-columns:56px minmax(0,1fr);gap:4px 12px;margin:0;font-size:13px}.kv dt{color:var(--dim2)}.kv dd{margin:0;overflow-wrap:anywhere}.cmd{display:flex;gap:8px;align-items:center;background:var(--soft);border:1px solid var(--line);border-radius:8px;padding:8px 10px}.cmd code{flex:1;min-width:0;overflow-x:auto;white-space:nowrap;font-family:var(--mono);font-size:12px;scrollbar-width:none}dialog.modal{border:1px solid var(--line);border-radius:12px;padding:0;background:var(--bg);color:var(--fg);width:min(560px,calc(100vw - 24px));box-shadow:var(--shadow)}dialog.modal::backdrop{background:#00000073}.modal-in{padding:16px;display:flex;flex-direction:column;gap:12px;max-height:min(80vh,640px);overflow:auto}.modal-in h3{font-size:15px}.modal-foot{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.steps li{display:flex;gap:8px;align-items:center;color:var(--dim2)}.steps li:before{content:"○";width:1.2em;text-align:center}.steps li.done{color:var(--ok)}.steps li.done:before{content:"✓"}.steps li.cur{color:var(--fg);font-weight:600}.steps li.cur:before{content:"●";color:var(--teal)}.steps li.bad{color:var(--err)}.steps li.bad:before{content:"✕"}.prog{height:6px;background:var(--soft);border-radius:9px;overflow:hidden}.prog i{display:block;height:100%;background:var(--teal);transition:width .3s}.prog.wait i{width:40%;animation:wf-slide 1.2s ease-in-out infinite}@keyframes wf-slide{0%{margin-left:-40%}to{margin-left:100%}}.list{display:flex;flex-direction:column;gap:6px}.pick{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:7px 10px}.pick label{flex:1;min-width:0;display:flex;flex-direction:column}@media (max-width: 720px){.logo span,.hide-s{display:none}.top{padding:6px 10px}.view{padding:8px}.menu{left:8px;right:72px;width:auto}.card{padding:12px;gap:12px}.view{padding:12px}.page{gap:12px}.card-foot{display:flex;justify-content:flex-end;gap:8px}}.btn{white-space:nowrap}.input{min-width:0;flex:1}.grps{display:flex;flex-direction:column;gap:8px}.grp{border:1px solid var(--line);border-radius:10px;background:var(--bg)}.grp>summary{display:flex;align-items:center;gap:8px;padding:9px 12px;cursor:pointer;list-style:none;font-weight:600}.grp>summary::-webkit-details-marker{display:none}.grp>summary:before{content:"▸";color:var(--dim);font-size:12px;transition:transform .12s}.grp[open]>summary:before{transform:rotate(90deg)}.grp-t{min-width:0;overflow-wrap:anywhere}.grp-b{padding:0 12px 12px}.bell{position:relative}.badge{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:99px;background:var(--dot);color:#fff;font-size:10px;line-height:16px;text-align:center;font-weight:700}.menu.inbox{width:340px;max-height:min(70vh,520px);overflow:auto}.inbox-ex{white-space:pre-wrap;overflow-wrap:anywhere}.menu .btn.sm{text-decoration:none;display:inline-flex;color:inherit}.mini.wide{grid-column:1 / -1}.models{display:flex;flex-direction:column}.model-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--line);flex-wrap:wrap}.model-row:first-child{border-top:0}.model-row input[type=radio]{accent-color:var(--teal)}
