:root{--bg:#f6f7f4;--surface:#ffffff;--surface-2:#eef4ef;--ink:#17211b;--muted:#66726b;--line:#dce3dd;--green:#2f7d5a;--green-soft:#dff1e7;--coral:#ba4e3a;--coral-soft:#f5ddd7;--amber:#ad761f;--amber-soft:#f7ecd1;--cyan:#2b7185;--cyan-soft:#dceff4;--focus:#1f6f4a;color-scheme:light}*{box-sizing:border-box}body,html{min-height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:Arial,Noto Sans TC,Microsoft JhengHei,sans-serif;letter-spacing:0}button,input,select,textarea{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}.app-shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}.sidebar{position:-webkit-sticky;position:sticky;top:0;display:flex;flex-direction:column;height:100vh;padding:20px 14px;background:#14221a;color:#f7fbf8;border-right:1px solid rgba(255,255,255,.08)}.brand{display:grid;grid-gap:4px;gap:4px;padding:10px 12px 18px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:12px}.brand span{font-size:28px;font-weight:800}.brand small{color:#b7c6bd;font-size:12px}.taiwan-clock{display:grid;grid-template-columns:18px 1fr;align-items:center;grid-gap:4px 8px;gap:4px 8px;margin:0 0 14px;padding:10px 12px;color:#e9f1ec;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-radius:8px}.taiwan-clock svg{grid-row:span 2;color:#9bd2b5}.taiwan-clock span{color:#b7c6bd;font-size:11px;line-height:1}.taiwan-clock strong{min-width:0;color:#f7fbf8;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:12px;font-weight:700;line-height:1.25;white-space:nowrap}nav{grid-gap:4px;gap:4px;min-height:0;overflow-y:auto;padding-top:12px}nav,nav a{display:grid}nav a{grid-template-columns:22px 1fr;align-items:center;min-height:38px;grid-gap:10px;gap:10px;padding:8px 10px;border-radius:8px;color:#e9f1ec}nav a:hover{background:rgba(255,255,255,.1)}.sidebar-security{display:grid;grid-gap:8px;gap:8px;flex:0 0 auto;margin:0 0 8px;padding:12px 10px;color:#c7d6cd;font-size:12px;line-height:1.45;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:8px}.logout-button{display:inline-flex;align-items:center;justify-content:center;min-height:38px;gap:8px;width:100%;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);color:#f7fbf8;border-radius:8px;cursor:pointer}.logout-button:hover{background:rgba(255,255,255,.14)}.logout-button:disabled{cursor:wait;opacity:.72}main{min-width:0;padding:28px}.module-page,.page-grid{display:grid;grid-gap:18px;gap:18px;max-width:1440px;margin:0 auto}.page-grid{grid-template-columns:repeat(12,minmax(0,1fr))}.topbar{grid-column:1/-1;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;min-height:72px}.eyebrow{margin:0 0 4px;color:var(--green);font-weight:700;font-size:13px}h1,h2,h3,p{margin-top:0}h1{font-size:34px}h1,h2{margin-bottom:0}h2{font-size:18px}h3{margin-bottom:8px;font-size:15px}.admin-strip,.module-card,.panel,.tool-surface{background:var(--surface);border:1px solid var(--line);border-radius:8px}.panel{grid-column:span 6;padding:18px}.wide{grid-column:1/-1}.module-header,.panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.metric-row span,.module-header span,.output-list span,.panel-header span,.timeline-row span{color:var(--muted);font-size:13px}.admin-grid,.module-grid,.quick-grid,.slot-grid,.work-grid{display:grid;grid-gap:12px;gap:12px}.slot-grid{grid-template-columns:repeat(5,minmax(140px,1fr))}.slot-tile{display:grid;grid-gap:10px;gap:10px;min-height:128px;padding:14px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px}.slot-tile strong{font-size:25px}.module-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.module-card{display:grid;grid-template-columns:42px 1fr 20px;align-items:center;grid-gap:12px;gap:12px;min-height:92px;padding:14px}.module-card:hover{border-color:#95b8a4;box-shadow:0 8px 24px rgba(29,48,35,.08)}.module-icon{display:grid;place-items:center;width:42px;height:42px;background:var(--green-soft);color:var(--green);border-radius:8px}.module-copy{display:grid;grid-gap:8px;gap:8px;min-width:0}.module-copy strong{overflow-wrap:anywhere}.module-arrow{color:var(--muted)}.status-badge{display:inline-flex;align-items:center;width:-moz-fit-content;width:fit-content;min-height:26px;padding:4px 9px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}.status-badge.good{background:var(--green-soft);color:var(--green)}.status-badge.busy{background:var(--amber-soft);color:var(--amber)}.status-badge.idle{background:var(--cyan-soft);color:var(--cyan)}.status-badge.warn{background:var(--coral-soft);color:var(--coral)}.timeline{display:grid;grid-gap:14px;gap:14px}.timeline-row{display:grid;grid-gap:8px;gap:8px}.metric-row,.output-list div,.timeline-row div:first-child{display:flex;align-items:center;justify-content:space-between;gap:10px}.progress{height:10px;overflow:hidden;background:#e6ece8;border-radius:999px}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--green),var(--cyan))}.quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.icon-text-button,.quick-grid a,.quick-grid button,.reference-types button,.segmented button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;gap:8px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;cursor:pointer}.icon-text-button:hover,.quick-grid a:hover,.quick-grid button:hover,.reference-types button:hover,.segmented button:hover{border-color:#9fbaaa}.notice-strip{margin-bottom:14px;padding:12px 14px;color:#31513f;background:var(--green-soft);border:1px solid #badac7;border-radius:8px;font-size:13px;line-height:1.6}.warn-strip{color:#742f22;background:var(--coral-soft);border-color:#e8b9ae}.breaking-file-list,.breaking-slot-grid,.breaking-summary-grid{display:grid;grid-gap:12px;gap:12px}.breaking-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:14px}.breaking-file-row,.breaking-slot-card,.breaking-summary-grid>div{border:1px solid var(--line);border-radius:8px;background:var(--surface-2)}.breaking-summary-grid>div{display:grid;grid-gap:8px;gap:8px;min-height:96px;padding:14px}.breaking-file-row small,.breaking-summary-grid span{color:var(--muted);font-size:13px}.breaking-summary-grid strong{overflow-wrap:anywhere;font-size:20px}.breaking-slot-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.breaking-slot-card{display:grid;align-content:start;grid-gap:12px;gap:12px;min-height:248px;padding:14px}.breaking-file-row,.slot-actions,.slot-card-top{display:flex;align-items:center;gap:10px}.slot-card-top{justify-content:space-between}.slot-card-top h3{margin:0;font-size:18px}.breaking-slot-card>strong{font-size:26px}.slot-funnel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:6px;gap:6px}.slot-funnel span{min-height:30px;padding:6px 8px;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:8px;font-size:12px;line-height:1.35}.compact-funnel{grid-template-columns:repeat(auto-fit,minmax(92px,1fr))}.source-diagnostics{display:grid;grid-gap:6px;gap:6px}.source-diagnostics>div{display:grid;grid-gap:3px;gap:3px;padding:8px;background:#fff;border:1px solid var(--line);border-radius:8px}.source-diagnostics small{color:var(--muted);line-height:1.45}.slot-actions{flex-wrap:wrap}.plain-link-button{justify-self:start;min-height:34px;padding:0;color:var(--green);background:transparent;border:0;font:inherit;font-weight:700;cursor:pointer}.slot-actions .icon-text-button,.slot-actions a,.slot-actions button{flex:0 0 auto;white-space:nowrap}.breaking-file-row{justify-content:space-between;min-height:68px;padding:12px}.breaking-file-row>div:first-child{display:grid;grid-gap:5px;gap:5px;min-width:0}.candidate-list{display:grid;grid-gap:8px;gap:8px;padding-top:10px;border-top:1px solid var(--line)}.candidate-list-header,.candidate-row{display:flex;align-items:center;gap:10px;justify-content:space-between}.candidate-list-header{color:var(--muted);font-size:13px}.candidate-row{padding:10px;background:#fff;border:1px solid var(--line);border-radius:8px}.candidate-row>div{display:grid;grid-gap:5px;gap:5px;min-width:0}.candidate-row strong{line-height:1.45}.candidate-row small{color:var(--muted)}.source-pill{justify-self:start;padding:3px 7px;color:#31513f;background:var(--green-soft);border-radius:999px;font-size:12px;font-weight:700}.compact-button{min-height:32px;padding:0 10px}.helper-list{margin:0 0 14px;padding-left:20px;color:var(--muted);font-size:13px;line-height:1.7}.saved-file-list{display:grid;grid-gap:10px;gap:10px;margin-top:12px}.saved-file-list a{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:8px}.muted-text{color:var(--muted);font-size:13px}.compact-table{margin-bottom:14px}.compact-table td{padding:9px 10px}.output-list{display:grid;grid-gap:12px;gap:12px}.output-list div{min-height:42px;border-bottom:1px solid var(--line)}.output-list div:last-child{border-bottom:0}.module-page{grid-template-columns:minmax(0,1fr)}.module-header{min-height:70px}.work-grid{grid-template-columns:1.1fr .9fr}.compact-work-grid{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}.proofread-panel{margin-top:12px}.three-column-grid{display:grid;grid-template-columns:280px minmax(0,1.15fr) minmax(320px,.85fr);grid-gap:12px;gap:12px}.tool-surface{padding:18px}.data-table{width:100%;border-collapse:collapse}.data-table td,.data-table th{padding:12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.data-table th{color:var(--muted);font-size:13px}.data-table input,.data-table select{width:100%;min-height:36px;padding:8px 10px;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:8px}.check-grid,.template-list{display:grid;grid-gap:8px;gap:8px}.template-list button{display:grid;grid-template-columns:18px 1fr auto;align-items:center;grid-gap:8px;gap:8px;min-height:42px;padding:9px 10px;text-align:left;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:8px;cursor:pointer}.template-list button.selected{border-color:var(--green);background:var(--green-soft)}.template-list small{color:var(--muted);font-size:12px}.weather-quick-grid,.weather-source-grid{display:grid;grid-gap:10px;gap:10px}.weather-source-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.weather-quick-grid button,.weather-source-grid>div{display:grid;grid-gap:6px;gap:6px;padding:12px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:8px}.weather-quick-grid small,.weather-source-grid small,.weather-source-grid span{color:var(--muted);font-size:12px}.weather-quick-grid button{cursor:pointer}.weather-quick-grid button.selected{background:var(--green-soft);border-color:var(--green)}.weather-more-formats{margin-top:14px}.weather-more-formats summary{cursor:pointer;color:var(--green);font-weight:700}.weather-more-formats .template-list{margin-top:10px}.check-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.check-grid label{display:flex;align-items:center;min-height:38px;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:8px}.code-box{overflow-x:auto;padding:14px;background:#15231c;color:#eef8f1;border-radius:8px;line-height:1.6;white-space:pre-wrap}.segmented{display:flex;flex-wrap:wrap;gap:8px}.segmented button.selected{background:var(--green);color:#fff;border-color:var(--green)}.upload-zone{display:grid;grid-gap:14px;gap:14px;padding:18px;background:var(--surface-2);border:1px dashed #9db4a5;border-radius:8px}.upload-zone.dragging{border-color:var(--green);background:var(--green-soft)}.upload-zone input{display:block;margin-top:8px;max-width:100%}.upload-zone .compact-field{display:grid;grid-gap:6px;gap:6px;max-width:220px}.reference-types{display:flex;flex-wrap:wrap;gap:8px}.file-list{display:grid;grid-gap:8px;gap:8px;margin:0;padding:0;list-style:none}.file-list li{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;grid-gap:8px;gap:8px;min-height:34px;padding:7px 9px;background:#fff;border:1px solid var(--line);border-radius:8px}.file-list small{color:var(--muted);font-size:12px}.generation-file-list{max-height:520px;overflow-y:auto}.generation-file-list>div{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;grid-gap:10px;gap:10px;min-height:54px;padding:9px;background:#fff;border:1px solid var(--line);border-radius:8px}.generation-file-list strong{display:block;overflow-wrap:anywhere;font-size:13px}.generation-file-list .icon-text-button{min-height:34px;padding:6px 9px}.feedback-result,.script-output{display:grid;grid-gap:12px;gap:12px}.feedback-result p,.mini-metric-grid>div,.script-output>div{padding:12px;background:#fff;border:1px solid var(--line);border-radius:8px}.feedback-result h3,.script-output h3{margin:0 0 8px;font-size:15px}.feedback-result p,.script-output p{margin-bottom:0;line-height:1.65}.mini-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:10px;gap:10px;margin-bottom:14px}.mini-metric-grid span{display:block;color:var(--muted);font-size:12px}.mini-metric-grid strong{font-size:24px}.form-stack{display:grid;grid-gap:12px;gap:12px}.form-stack label{display:grid;grid-gap:6px;gap:6px;color:var(--muted);font-size:13px}.form-stack label.inline-check{display:flex;align-items:center;gap:10px}.inline-check input{width:auto;min-height:auto}.form-stack input,.form-stack select,.form-stack textarea{width:100%;min-height:42px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}.form-stack textarea{min-height:180px;resize:vertical}button:disabled{cursor:not-allowed;opacity:.62}.admin-strip{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:#fff8ef;border-color:#edcf94}.admin-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.chat-launcher,.temporary-chat{position:fixed;right:22px;bottom:22px;z-index:30}.chat-launcher{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;color:#fff;background:#14221a;border:1px solid rgba(255,255,255,.18);border-radius:999px;box-shadow:0 12px 28px rgba(20,34,26,.24);cursor:pointer}.temporary-chat{display:grid;grid-template-rows:auto minmax(160px,1fr) auto;width:min(380px,calc(100vw - 28px));max-height:min(540px,calc(100vh - 44px));overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:0 18px 50px rgba(20,34,26,.22)}.temporary-chat header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;color:#fff;background:#14221a}.temporary-chat header div{display:grid;grid-gap:3px;gap:3px}.temporary-chat header span{color:#b7c6bd;font-size:12px}.chat-input-row button,.temporary-chat header button{display:grid;place-items:center;width:36px;height:36px;color:inherit;background:transparent;border:1px solid rgba(255,255,255,.18);border-radius:8px;cursor:pointer}.chat-messages{display:grid;align-content:start;grid-gap:10px;gap:10px;overflow-y:auto;padding:12px}.chat-messages p{margin:0;padding:9px 11px;border-radius:8px;line-height:1.55;white-space:pre-wrap}.chat-messages .from-user{justify-self:end;max-width:86%;color:#fff;background:var(--green)}.chat-messages .from-assistant{justify-self:start;max-width:92%;background:var(--surface-2);border:1px solid var(--line)}.chat-messages .typing{display:inline-flex;align-items:center;gap:8px}.chat-messages .typing span{width:8px;height:8px;background:var(--green);border-radius:50%;animation:pulse-dot .9s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}.chat-input-row{display:grid;grid-template-columns:minmax(0,1fr) 42px;grid-gap:8px;gap:8px;padding:12px;border-top:1px solid var(--line)}.chat-input-row input{min-height:42px;padding:10px 12px;border:1px solid var(--line);border-radius:8px}.chat-input-row button{width:42px;height:42px;color:#fff;background:var(--green);border-color:var(--green)}.login-screen{position:relative;display:grid;min-height:100vh;place-items:center;padding:24px;background:radial-gradient(circle at 20% 20%,rgba(47,125,90,.28),transparent 28%),radial-gradient(circle at 80% 10%,rgba(43,113,133,.22),transparent 30%),#111d17}.taiwan-clock-login{position:absolute;top:18px;left:18px;width:min(310px,calc(100vw - 36px));margin:0;background:rgba(20,34,26,.78);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.login-panel{display:grid;grid-gap:18px;gap:18px;width:min(420px,100%);padding:34px;color:#f7fbf8;background:rgba(20,34,26,.88);border:1px solid rgba(255,255,255,.12);border-radius:8px;box-shadow:0 24px 70px rgba(0,0,0,.28)}.login-panel h1{font-size:44px}.login-mark{display:grid;place-items:center;width:52px;height:52px;background:rgba(223,241,231,.16);border:1px solid rgba(223,241,231,.28);border-radius:8px}.login-form{display:grid;grid-gap:14px;gap:14px}.login-form label{display:grid;grid-gap:8px;gap:8px;color:#cbd8d0;font-size:13px}.login-form input{min-height:48px;padding:12px 14px;color:#f7fbf8;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:8px}.login-form button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:46px;color:#fff;background:var(--green);border:0;border-radius:8px;cursor:pointer}.login-form button:disabled{cursor:wait;opacity:.65}.login-error{margin:0;color:#ffd6cd;font-size:13px}@media (max-width:1100px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto}.sidebar-security{margin-top:14px}nav{grid-template-columns:repeat(2,minmax(0,1fr))}main{padding:18px}.admin-grid,.breaking-slot-grid,.breaking-summary-grid,.module-grid,.slot-grid,.three-column-grid,.work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.panel{grid-column:1/-1}}@media (max-width:680px){.admin-strip,.module-header,.panel-header,.topbar{align-items:start;flex-direction:column}.admin-grid,.breaking-slot-grid,.breaking-summary-grid,.mini-metric-grid,.module-grid,.quick-grid,.slot-grid,.three-column-grid,.work-grid,nav{grid-template-columns:1fr}.breaking-file-row{align-items:flex-start;flex-direction:column}.slot-actions{width:100%}.slot-actions .icon-text-button,.slot-actions a,.slot-actions button{min-width:112px}.candidate-row{align-items:flex-start;flex-direction:column}.compact-funnel,.slot-funnel,.weather-source-grid{grid-template-columns:1fr}h1{font-size:28px}}