﻿@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700;800&display=swap');
:root{--cs-primary-50:#effafa;--cs-primary-100:#d6f4f5;--cs-primary-200:#a9ecef;--cs-primary-300:#71e6ea;--cs-primary-400:#5ad8dd;--cs-primary-500:#42cbd0;--cs-primary-600:#37b0b5;--cs-primary-700:#26797d;--cs-primary-800:#1c6b6e;--cs-primary-900:#154e51;--cs-neutral-50:#f8fafc;--cs-neutral-100:#f1f5f9;--cs-neutral-200:#e2e8f0;--cs-neutral-300:#cbd5e1;--cs-neutral-400:#94a3b8;--cs-neutral-500:#64748b;--cs-neutral-600:#475569;--cs-neutral-700:#334155;--cs-neutral-800:#1e293b;--cs-neutral-900:#0f172a;--cs-bg:#f8fafc;--cs-surface:#fff;--cs-border:#e2e8f0;--cs-text:#1e293b;--cs-text-muted:#64748b;--cs-accent:#42cbd0;--cs-accent-text:#26797d;--cs-success:#15803d;--cs-success-bg:#dcfce7;--cs-warning:#b45309;--cs-warning-bg:#fef3c7;--cs-error:#b91c1c;--cs-error-bg:#fee2e2;--cs-info:#26797d;--cs-info-bg:#d6f4f5}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--cs-bg:#0f172a;--cs-surface:#1e293b;--cs-border:#334155;--cs-text:#f1f5f9;--cs-text-muted:#94a3b8;--cs-accent-text:#71e6ea;--cs-success:#4ade80;--cs-success-bg:#14532d;--cs-warning:#fbbf24;--cs-warning-bg:#451a03;--cs-error:#f87171;--cs-error-bg:#450a0a;--cs-info:#5ad8dd;--cs-info-bg:#134e4a}}
:root[data-theme=dark]{--cs-bg:#0f172a;--cs-surface:#1e293b;--cs-border:#334155;--cs-text:#f1f5f9;--cs-text-muted:#94a3b8;--cs-accent-text:#71e6ea;--cs-success:#4ade80;--cs-success-bg:#14532d;--cs-warning:#fbbf24;--cs-warning-bg:#451a03;--cs-error:#f87171;--cs-error-bg:#450a0a;--cs-info:#5ad8dd;--cs-info-bg:#134e4a}
*{box-sizing:border-box}body{margin:0;background:var(--cs-bg);color:var(--cs-text);font:18px/1.65 'Noto Sans TC',sans-serif}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button{cursor:pointer}a{color:inherit;text-decoration:none}button{border:1px solid var(--cs-border);border-radius:7px;padding:9px 15px;background:var(--cs-surface);color:var(--cs-text);transition:.15s}button:hover{border-color:var(--cs-accent);background:var(--cs-info-bg)}button.primary{background:#42cbd0;color:#0f172a;border-color:#42cbd0;font-weight:600}button.primary:hover{background:#37b0b5}button.text{border:0;background:none;color:var(--cs-accent-text);padding:4px}aside{position:fixed;inset:0 auto 0 0;width:246px;background:var(--cs-surface);border-right:1px solid var(--cs-border);padding:28px 18px;display:flex;flex-direction:column;z-index:5}.brand{display:flex;align-items:center;margin:0 6px 30px;gap:14px}.brand span{border-left:1.5px solid var(--cs-border);padding-left:16px}.brand b{font-size:24px;letter-spacing:2px}.brand small{color:var(--cs-accent-text);font-size:14px;font-weight:700;display:block;margin-top:4px}.workspace{display:flex;align-items:center;gap:10px;padding:14px 10px;border:1px solid var(--cs-border);border-radius:9px;font-size:16px}.workspace small{font-size:12px;letter-spacing:1px;display:block;color:var(--cs-text-muted);margin-top:4px}.workspace-icon{padding:7px;background:var(--cs-info-bg);color:var(--cs-accent-text);border-radius:6px}.nav-label{font-size:15px;color:var(--cs-text-muted);padding:27px 14px 12px;letter-spacing:2px}nav a{display:flex;align-items:center;gap:13px;padding:13px 15px;margin-bottom:6px;border-radius:7px;color:var(--cs-text-muted);font-weight:500}nav a.active{color:var(--cs-accent-text);background:var(--cs-info-bg)}nav a:hover{background:var(--cs-bg)}.nav-icon{width:20px;height:20px}.nav-count{margin-left:auto;background:var(--cs-error-bg);color:var(--cs-error);padding:0 7px;border-radius:5px;font-size:15px}.side-bottom{margin-top:auto}.side-note{margin:20px 12px;color:var(--cs-accent-text);font-size:16px}.side-note small{display:block;color:var(--cs-text-muted);font-size:15px;margin:7px 0 0 15px}.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#37b0b5;margin-right:5px}.theme{width:100%;border:0;text-align:left;color:var(--cs-text-muted)}.profile{border-top:1px solid var(--cs-border);padding-top:20px;margin-top:16px;display:flex;gap:10px;font-size:16px}.profile small{display:block;font-size:14px;color:var(--cs-text-muted);margin-top:4px}.avatar{display:inline-grid;place-items:center;background:var(--cs-info-bg);color:var(--cs-accent-text);width:36px;height:36px;border-radius:50%;font-weight:600}.avatar.small{width:30px;height:30px;font-size:15px}.shell{margin-left:246px}header{height:76px;background:var(--cs-surface);border-bottom:1px solid var(--cs-border);padding:0 38px;display:flex;align-items:center;justify-content:space-between}.breadcrumb{font-size:16px;color:var(--cs-text-muted)}.breadcrumb span{margin:0 12px;color:var(--cs-text-muted)}.breadcrumb b{color:var(--cs-text);font-weight:500}.header-right{display:flex;gap:24px;align-items:center;font-size:16px;color:var(--cs-text-muted)}.icon-button{position:relative;border:0;padding:3px;font-size:28px}.icon-button i{position:absolute;right:2px;top:5px;width:5px;height:5px;background:var(--cs-error);border-radius:50%}main{padding:33px 38px 25px;max-width:1600px;margin:auto}.eyebrow{color:var(--cs-accent-text);font-size:14px;letter-spacing:2px;font-weight:600;margin-bottom:7px}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;gap:15px}h1{font-size:32px;letter-spacing:.5px;margin:0 0 7px;font-weight:700}p{color:var(--cs-text-muted);line-height:1.8;margin:0;font-size:16px}.actions{display:flex;gap:10px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:25px}.stat{border:1px solid var(--cs-border);border-radius:10px;background:var(--cs-surface);padding:20px 22px}.stat-top{display:flex;justify-content:space-between;color:var(--cs-text-muted);font-size:16px}.stat-icon{display:grid;place-items:center;width:29px;height:29px;background:var(--cs-info-bg);color:var(--cs-accent-text);border-radius:7px;margin-top:-4px}.stat strong{font-size:38px;display:block;line-height:1.5;margin:5px 0}.stat small{font-size:14px;color:var(--cs-text-muted)}.stat small em{font-style:normal;color:var(--cs-accent-text)}.danger{color:var(--cs-error)!important}.warning{color:var(--cs-warning)!important}.panel{background:var(--cs-surface);border:1px solid var(--cs-border);border-radius:10px;margin-bottom:22px;overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 23px}.panel-head h2{font-size:20px;margin:0}.panel-head h2 small{color:var(--cs-text-muted);font-weight:400;font-size:15px;margin-left:10px}.filters{display:flex;gap:6px;padding:0 23px 19px;align-items:center;flex-wrap:wrap}.tab{border:0;background:none;color:var(--cs-text-muted);font-size:16px;padding:7px 12px}.tab.active{background:var(--cs-info-bg);color:var(--cs-accent-text);font-weight:600}.search{margin-left:auto;position:relative}.search input{width:220px;padding:8px 12px;font-size:15px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap}th{background:var(--cs-primary-50);font-size:14px;font-weight:500;color:#334155;padding:12px 23px;border-block:1px solid var(--cs-border)}td{padding:20px 23px;font-size:16px;border-bottom:1px solid var(--cs-border)}tr:last-child td{border-bottom:0}tr.clickable{cursor:pointer}tr.clickable:hover{background:var(--cs-bg)}.project-cell{display:flex;gap:12px;align-items:center}.project-mark{height:41px;width:41px;display:grid;place-items:center;border-radius:8px;background:var(--cs-info-bg);color:var(--cs-accent-text);font-size:22px}.project-name{font-size:18px;font-weight:600}.sub{display:block;font-size:14px;font-weight:400;color:var(--cs-text-muted);margin-top:5px}.badge{display:inline-block;font-size:14px;line-height:1.7;padding:2px 8px;border-radius:4px;background:var(--cs-info-bg);color:var(--cs-info)}.badge.red{color:var(--cs-error);background:var(--cs-error-bg)}.badge.amber{color:var(--cs-warning);background:var(--cs-warning-bg)}.badge.green{color:var(--cs-success);background:var(--cs-success-bg)}.badge.gray{color:var(--cs-text-muted);background:var(--cs-bg)}.progress-label{display:flex;justify-content:space-between;gap:30px;font-size:14px;margin-bottom:7px}.progress{height:5px;background:var(--cs-border);border-radius:4px;overflow:hidden;min-width:100px}.progress i{display:block;height:100%;background:var(--cs-accent);border-radius:4px}.lower-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:22px}.list-item{padding:16px 23px;display:flex;gap:12px;align-items:center;border-top:1px solid var(--cs-border)}.list-item .grow{flex:1;min-width:0}.list-item strong{font-size:16px;font-weight:500}.list-item small{color:var(--cs-text-muted);font-size:14px;display:block;margin-top:5px}.list-item time{font-size:14px;color:var(--cs-text-muted)}input[type=checkbox]{accent-color:#26797d;width:17px;height:17px;cursor:pointer}.done{text-decoration:line-through;color:var(--cs-text-muted)}.document-icon{display:grid;place-items:center;width:35px;height:40px;border-radius:5px;border:1px solid var(--cs-border);color:var(--cs-accent-text);font-size:13px;background:var(--cs-primary-50)}.panel-foot{border-top:1px solid var(--cs-border);padding:12px 23px;font-size:14px;color:var(--cs-text-muted)}footer{padding:0 38px 25px;color:var(--cs-text-muted);font-size:13px;letter-spacing:1.6px;display:flex;justify-content:space-between}footer span{letter-spacing:.5px}.empty{text-align:center;padding:45px;color:var(--cs-text-muted);font-size:16px}.timeline{padding:0 25px 20px}.milestone{display:flex;align-items:center;gap:18px;padding:19px 0;border-top:1px solid var(--cs-border)}.milestone .point{width:12px;height:12px;border:3px solid var(--cs-accent);border-radius:50%}.milestone .grow{flex:1}.milestone strong{font-size:18px}.milestone small{display:block;color:var(--cs-text-muted);font-size:15px;margin-top:5px}.detail-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:25px;padding:25px}.detail-summary label{color:var(--cs-text-muted);font-size:15px;display:block;margin-bottom:8px}.detail-summary strong{font-size:20px}.hint{background:var(--cs-info-bg);color:var(--cs-accent-text);padding:14px 18px;border-radius:7px;font-size:16px;margin-bottom:20px}dialog{border:1px solid var(--cs-border);border-radius:12px;background:var(--cs-surface);color:var(--cs-text);padding:26px;width:520px;max-width:calc(100vw - 30px);max-height:90vh}dialog::backdrop{background:#0f172a80;backdrop-filter:blur(3px)}dialog h2{margin:0;font-size:24px}dialog p{margin:6px 0 20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field{display:flex;flex-direction:column;gap:7px;font-size:16px}.field.full{grid-column:1/-1}input,select,textarea{padding:10px 12px;border:1px solid var(--cs-border);border-radius:6px;background:var(--cs-surface);color:var(--cs-text);min-width:0;width:100%}input:focus,select:focus,textarea:focus{outline:0;border-color:#42cbd0;box-shadow:0 0 0 3px #42cbd040}input[type=checkbox]{width:auto}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.version{padding:15px 0;border-bottom:1px solid var(--cs-border);display:flex;justify-content:space-between;gap:10px;align-items:center}.version strong{font-size:18px}.version small{display:block;color:var(--cs-text-muted);font-size:15px;margin-top:5px}#toast{position:fixed;bottom:28px;left:calc(50% + 100px);transform:translateX(-50%);padding:13px 24px;background:#154e51;color:white;border-radius:8px;box-shadow:0 5px 25px #0f172a22;display:none;z-index:20;font-size:16px}.file-actions{display:flex;gap:8px}.muted{color:var(--cs-text-muted)}
@media(min-width:1600px){main{padding-top:40px}.stats{gap:24px}td{padding-block:24px}}@media(max-width:1150px){aside{width:210px;padding-inline:12px}.shell{margin-left:210px}main{padding:25px 22px}header{padding:0 22px}.brand{gap:8px}.brand span{padding-left:10px}.brand b{font-size:22px}.lower-grid{grid-template-columns:1fr}.stats{gap:10px}.stat{padding:16px}.header-right{gap:15px}}@media(max-width:760px){aside{position:static;width:100%;padding:14px 16px;display:block;border-right:0;border-bottom:1px solid var(--cs-border)}.brand{margin:0 0 15px}.brand svg{height:35px}.brand small{font-size:13px}.workspace,.nav-label,.side-bottom{display:none}nav{display:flex;overflow:auto;gap:4px}nav a{white-space:nowrap;font-size:15px;padding:10px;gap:6px;margin:0}.nav-count{display:none}.nav-icon{width:16px;height:16px}.shell{margin:0}header{height:55px;padding:0 17px}.header-right #date{display:none}main{padding:24px 16px}h1{font-size:28px}.page-heading{align-items:flex-start;flex-wrap:wrap}.stats{grid-template-columns:repeat(2,1fr);gap:10px}.stat strong{font-size:32px}.stat-top{font-size:15px}.stat small{font-size:13px}.search{width:100%;margin:8px 0 0}.search input{width:100%}.panel-head{padding:17px}.panel-head h2 small{display:none}.filters{padding-inline:15px}td,th{padding:15px}.lower-grid{gap:0}.list-item{padding:15px}.detail-summary{grid-template-columns:1fr 1fr;gap:20px}.file-actions{flex-wrap:wrap}footer{padding:0 16px 20px;font-size:12px}footer span{display:none}#toast{left:50%;width:max-content;max-width:90vw}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}}


/* Allow the enlarged sidebar to scroll on short screens and at browser zoom. */
aside{overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable}
aside>*{flex-shrink:0}

/* Wider desktop navigation; keep scrolling without a visible scrollbar. */
aside{scrollbar-width:none;scrollbar-gutter:auto;-ms-overflow-style:none}
aside::-webkit-scrollbar{display:none;width:0;height:0}
aside .brand,aside .workspace,aside nav a{flex-shrink:0}
aside .brand b,aside .brand small,aside nav a{white-space:nowrap}
@media(min-width:761px){aside{width:300px}.shell{margin-left:300px}}
/* Secondary notification actions should stay smaller than the message body. */
button[data-read]{font-size:14px;line-height:1.5;white-space:nowrap}
#read-all{font-size:15px;line-height:1.5}
