:root {
  color-scheme: light;
  --bg:#f4f6f4;--panel:#fff;--surface:#edf2ef;--text:#193338;--muted:#5d7378;
  --line:#d9e3dd;--accent:#205e55;--accent-soft:#e5f1eb;--gold:#9a712c;
  --danger:#a83c34;--warning:#8d631c;--shadow:0 18px 60px #16332a18;
  font-family: "Segoe UI","Microsoft JhengHei","Noto Sans TC",sans-serif;
  font-size:17px;line-height:1.6;
}
:root[data-theme=dark] {
  color-scheme:dark;--bg:#101b1e;--panel:#19262b;--surface:#213338;--text:#edf4f1;
  --muted:#abc0c4;--line:#34494c;--accent:#9ad2bc;--accent-soft:#263e36;
  --gold:#e6bd76;--danger:#ffaaa2;--warning:#e8c27f;--shadow:0 18px 60px #0004;
}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}
button,input,select,textarea{font:inherit;color:inherit}
button,.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:4px 12px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--text);text-decoration:none;cursor:pointer;font-weight:600;white-space:nowrap}
button:hover,.button:hover{background:var(--surface);border-color:var(--muted)}
button:disabled{opacity:.55;cursor:wait}
button.primary,.button.primary{background:var(--accent);border-color:var(--accent);color:var(--panel)}
[data-theme=dark] .primary{color:#102820}
button.danger{color:var(--danger)}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
a,button,input,select,textarea{outline-offset:4px} :focus-visible{outline:3px solid var(--gold)}
input,select,textarea{width:100%;min-height:38px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:5px 10px}
textarea{min-height:100px;resize:vertical}input[type=checkbox]{width:21px;height:21px;min-height:0;accent-color:var(--accent)}
label{display:block;font-weight:600}label>input,label>textarea,label>select{margin-top:6px}
h1,h2,h3,p{margin-top:0}h1{font-size:clamp(27px,2.3vw,34px);line-height:1.3;margin-bottom:10px;letter-spacing:-.5px}
h2{font-size:20px;margin-bottom:0}h3{font-size:19px}p{margin-bottom:16px}
small,.small{font-size:15px}.muted{color:var(--muted)}.eyebrow{color:var(--accent);letter-spacing:.15em;font-weight:700;font-size:14px;margin-bottom:12px}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:48px;padding:4px 20px;border-bottom:1px solid var(--line);background:var(--panel);position:sticky;top:0;z-index:10}
.brand{display:flex;align-items:center;gap:9px;color:var(--text)}.brand img{width:32px;height:32px}.brand strong{font-size:20px;letter-spacing:-.4px;white-space:nowrap}
.top-actions button{min-height:40px;padding:5px 12px}
.top-actions,.actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.layout{display:grid;grid-template-columns:200px minmax(0,1fr);min-height:calc(100vh - 48px)}
.sidebar{padding:12px 10px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:5px}
.navlink{display:flex;gap:12px;align-items:center;color:var(--muted);padding:9px 12px;border-radius:8px;font-weight:600}
.navlink.active{background:var(--accent-soft);color:var(--accent)}
.navlink:hover{text-decoration:none;background:var(--surface)}
.navicon{width:24px;text-align:center;font-size:20px}.nav-divider{border-top:1px solid var(--line);margin:12px 12px 6px}
.sidebar-note{padding:18px;font-size:14px;color:var(--muted);margin-top:auto}
main{min-width:0;padding:12px clamp(16px,1.5vw,28px) 28px;max-width:1900px;width:100%;margin:0 auto}
.page-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.page-head>div:not(.actions){display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 16px;min-width:0}
.page-head h1,.home-tools h1{font-size:24px;margin:0;line-height:1.3}
.page-head p{color:var(--muted);margin:0;max-width:850px;overflow-wrap:anywhere}
.project-back{align-self:center;padding:6px;min-width:36px;text-align:center}
.project-description{color:var(--muted)}.project-description summary{cursor:pointer}.project-description[open]{flex-basis:100%}.project-description p{padding-top:6px}
.section-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px 16px;margin:12px 0 8px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.banner{padding:6px 12px;background:var(--accent-soft);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between;gap:10px 16px}
.banner>div{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 14px}.banner strong{font-size:16px}.banner .small{color:var(--muted)}.banner .button{flex-shrink:0}
.notice{padding:8px 12px;border-radius:8px;background:var(--surface);color:var(--muted);margin:14px 0}.error{color:var(--danger)}
.searchbar{display:flex;gap:8px;margin:10px 0}.searchbar input{min-width:100px;flex:1;min-height:38px}
.home-tools{display:flex;align-items:center;gap:12px;margin-bottom:10px}.home-tools h1{flex-shrink:0}.home-tools .searchbar{flex:1;min-width:180px;margin:0}.home-tools>button{flex-shrink:0}
.searchbar select{max-width:250px}
.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:10px 0}
.filters label{font-size:15px;color:var(--muted);flex:1;min-width:140px;max-width:260px}
.filters input,.filters select{font-size:16px;margin-top:4px}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:8px 0;flex-wrap:wrap}
.tabs button{border:0;border-radius:0;background:none;padding:5px 12px;border-bottom:3px solid transparent;color:var(--muted)}
.tabs button.active{border-bottom-color:var(--accent);color:var(--accent)}
.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:17px}
th{font-size:15px;color:var(--muted);font-weight:600;padding:8px 12px;background:var(--surface);white-space:nowrap}
td{padding:12px;border-top:1px solid var(--line);vertical-align:middle}
tbody tr:hover{background:var(--accent-soft)}tbody tr:focus-within{background:var(--accent-soft)}
td.doc-name{min-width:260px;width:44%}.doc-name a{font-size:18px;font-weight:650;overflow-wrap:anywhere;color:var(--text)}
.doc-name .muted{margin-top:4px}.type{display:inline-block;color:var(--accent);font-size:12px;font-weight:750;letter-spacing:.08em;margin-right:8px}
.badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}.badge{display:inline-block;background:var(--accent-soft);color:var(--accent);font-size:14px;padding:2px 9px;border-radius:5px;white-space:nowrap}
.badge.warn{color:var(--warning);background:var(--surface)}.badge.dim{color:var(--muted);background:var(--surface)}
.date{white-space:nowrap;font-variant-numeric:tabular-nums}
.row-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.row-actions button{font-size:14px;min-height:36px;padding:5px 10px}
.project-list .project-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 16px;border-bottom:1px solid var(--line);color:var(--text)}
.project-row:last-child{border-bottom:0}.project-row:hover{background:var(--accent-soft);text-decoration:none}
.project-row strong{font-size:18px}.project-row p{margin:2px 0 0;color:var(--muted);font-size:16px}
.empty{padding:22px 24px;text-align:center;color:var(--muted)}.empty h3{color:var(--text);margin-bottom:6px}.empty p{margin:0}
.toolbar{display:flex;justify-content:space-between;align-items:center;padding:10px 18px;background:var(--surface);gap:14px}
.source-row{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;gap:20px;justify-content:space-between}.source-row:last-child{border:0}
.source-row h3{margin:0 0 5px}.source-row p{margin:4px 0;font-size:15px}.source-row .actions{align-content:flex-start}
.result{padding:14px 16px;border-bottom:1px solid var(--line)}.result:last-child{border:0}.result h3{margin:0 0 6px}
.snippet{padding:8px 12px;margin-top:8px;border-left:3px solid var(--accent);background:var(--surface)}
.snippet p{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0 0}.snippet small{color:var(--accent)}
.login-wrap{min-height:calc(100vh - 52px);display:grid;place-items:center;padding:30px}
.login-panel{max-width:650px;background:var(--panel);padding:clamp(26px,5vw,54px);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}
.login-panel h1{font-size:34px}.login-panel p{color:var(--muted);font-size:18px}
.login-steps{border-top:1px solid var(--line);margin-top:32px;padding-top:18px;color:var(--muted);font-size:16px}.login-steps p{font-size:16px;margin:10px 0}
.avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:700}
.account-name{font-size:15px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
dialog{border:1px solid var(--line);border-radius:16px;background:var(--panel);color:var(--text);width:min(600px,calc(100vw - 30px));max-height:90vh;padding:28px;box-shadow:var(--shadow)}
dialog::backdrop{background:#081b24a8;backdrop-filter:blur(4px)}
dialog h2{margin:0 0 8px}dialog form{display:flex;flex-direction:column;gap:18px}dialog .actions{justify-content:flex-end;margin-top:8px}
.check-label{display:flex;gap:10px;align-items:center;font-size:16px;font-weight:400}
#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--text);color:var(--bg);padding:12px 24px;border-radius:10px;box-shadow:var(--shadow);z-index:50;display:none;max-width:90vw}#toast.show{display:block}
.history-section{margin-top:10px}.history-section>summary{font-size:20px;font-weight:650;cursor:pointer;padding:10px 16px;background:var(--surface)}
.history-record{padding:12px 16px;border-top:1px solid var(--line)}.history-record summary{cursor:pointer;font-weight:600}
.history-record dl{display:grid;grid-template-columns:minmax(110px,180px) minmax(0,1fr);gap:8px 20px;margin:16px 0}
dt{color:var(--muted);font-size:15px}dd{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
pre{white-space:pre-wrap;overflow-wrap:anywhere;font:15px/1.7 "Segoe UI","Microsoft JhengHei",sans-serif}
.loading{padding:80px 30px;text-align:center;color:var(--muted)}
.skip{position:absolute;left:-10000px;z-index:60;background:var(--panel);padding:12px}.skip:focus{left:10px;top:5px}

@media(prefers-reduced-motion:no-preference){button,a{transition:background .12s,border-color .12s}}
.todo-title{min-width:260px;width:44%}
.todo-filters{margin:12px 0}.todo-filters label{display:flex;align-items:center;gap:10px;flex:0 1 235px;max-width:280px;white-space:nowrap}.todo-filters select{margin:0;min-width:0}.todo-add{margin-left:auto}
.todo-empty{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 14px;padding:16px 18px}.todo-empty strong{font-size:18px}.todo-empty .muted{font-size:16px}
.text-button{padding:0;min-height:32px;border:0;background:transparent;font-size:18px;text-align:left;white-space:normal;justify-content:flex-start;line-height:1.5}
.text-button:hover{background:none;color:var(--accent);text-decoration:underline}
.todo-document{margin-top:4px;overflow-wrap:anywhere}.todo-document a{color:var(--muted)}
.todo-description{margin-top:4px;color:var(--muted)}.todo-description p{white-space:pre-wrap;margin:8px 0 0;overflow-wrap:anywhere}
.todo-status{min-width:112px;font-size:16px;min-height:42px;padding:7px 10px}
.todo-status.doing{color:var(--accent)}.todo-status.blocked{color:var(--warning)}.todo-status.done{color:var(--muted)}
.todo-deadline .badge{display:table;margin-top:5px}.badge.overdue{color:var(--danger);background:var(--surface)}
.todo-done .text-button{color:var(--muted)}.todo-more{display:block;margin:12px auto 0}
.todo-form-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:16px}
.todo-form-grid select{min-width:0}.todo-form-grid input{min-width:0}
.todo-event{padding:16px 0;border-top:1px solid var(--line)}.todo-changes{display:grid;grid-template-columns:85px minmax(0,1fr);gap:8px 12px;font-size:16px;margin:12px 0}
.todo-changes dd{white-space:pre-wrap;overflow-wrap:anywhere}.change-arrow{color:var(--accent)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.meeting-tools{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;margin:12px 0 6px}.meeting-tools .searchbar{flex:1;min-width:230px;margin:0}.meeting-tools .check-label{white-space:nowrap}
.meeting-list-meta{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:8px}.meeting-list-meta .text-button{font-size:15px;font-weight:400}
.meeting-title{min-width:250px;width:40%}.meeting-document{min-width:180px;max-width:400px;overflow-wrap:anywhere}.meeting-document a{font-size:17px}
.meeting-summary{margin-top:5px;color:var(--muted)}.meeting-summary summary{cursor:pointer}.meeting-summary p{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0 0}
.meeting-form-head{display:grid;grid-template-columns:minmax(150px,1fr) minmax(0,2fr);gap:14px}.meeting-form-note{margin:0;line-height:1.6}
.project-head{flex-wrap:wrap;align-items:center;column-gap:16px;border-bottom:1px solid var(--line);padding-bottom:8px}
.project-head .project-heading{flex:1 1 260px;gap:4px 10px;align-items:center}
.project-heading h1{overflow-wrap:anywhere}.project-description{position:relative}
.project-description[open]{flex-basis:auto}.project-description p{font-size:15px;margin:0 0 10px}.project-info-body{position:absolute;top:calc(100% + 8px);left:0;width:300px;max-width:calc(100vw - 24px);padding:14px;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);z-index:6}.compact-label{display:none}
.project-head .project-tabs{order:1;margin:0;border:0;flex-shrink:0}
.project-head>.actions{order:2;gap:8px}.project-tabs button{font-size:16px}
@media(max-width:1100px){.project-head .project-heading{flex-basis:calc(100% - 350px)}.project-head .project-tabs{order:3;flex-basis:100%}.project-head>.actions{order:2}}
@media(max-width:1050px){.layout{grid-template-columns:175px minmax(0,1fr)}.sidebar{padding:12px 8px}.navlink{padding:9px}.account-name{display:none}.page-head{flex-wrap:wrap}.home-tools{flex-wrap:wrap}.home-tools .searchbar{flex-basis:300px}.source-row{flex-direction:column}}
@media(max-width:720px){
  button,.button{min-height:44px}input,select{min-height:44px}
  .layout{display:block}.sidebar{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;overflow-x:auto;scrollbar-width:thin;padding:4px 8px;gap:4px}.navlink{white-space:nowrap;font-size:15px;gap:6px;padding:8px}.nav-divider,.sidebar-note{display:none}
  .topbar{padding:4px 10px;gap:8px}.brand{gap:7px}.brand img{width:28px;height:28px}.brand strong{font-size:17px}.top-actions{flex-wrap:nowrap;gap:4px}.top-actions button{min-height:44px;padding:4px 8px;font-size:14px}
  main{padding:10px 12px 24px}.page-head{gap:8px}.page-head h1,.home-tools h1{font-size:22px}.home-tools{gap:8px}.home-tools>button{margin-left:auto}.home-tools .searchbar{order:3;flex-basis:100%}
  .searchbar{flex-wrap:wrap}.searchbar input{min-height:44px}.searchbar select{max-width:none}.searchbar button{flex:0 0 auto}.banner{flex-wrap:wrap}.banner .button{margin-left:auto}.filters label{max-width:none}
  .wide-label{display:none!important}.compact-label{display:inline}.project-head>div.project-heading{flex-basis:100%;display:grid;grid-template-columns:28px minmax(0,1fr) 32px;gap:6px}.project-heading h1{font-size:20px}.project-description summary{list-style:none;min-height:44px;display:grid;place-items:center;font-size:22px}.project-info-body{left:auto;right:0;width:calc(100vw - 40px)}.project-head .project-tabs{flex-basis:auto;order:2}.project-head>.actions{order:3;margin-left:auto;flex-wrap:wrap}.project-head>.actions button{font-size:15px}.project-tabs button{font-size:15px;padding:6px 10px}
  .project-list .project-row{padding:10px 12px}.project-row strong{font-size:17px}.project-row p{font-size:15px}.section-head{align-items:center}
  .history-record dl{grid-template-columns:1fr;gap:4px}dd{margin-bottom:12px}.login-panel h1{font-size:29px}
  .todo-form-grid,.meeting-form-head{grid-template-columns:1fr}.todo-title{min-width:240px}.todo-filters label{flex:1 1 220px;max-width:none}.todo-add{margin-left:0}.meeting-tools .searchbar{flex-basis:100%}.meeting-title{min-width:220px}.tabs{gap:0}
}
