:root{--blue-deep: #002868;--blue-mid: #e5e7eb;--blue-panel: #ffffff;--blue-card: #f9fafb;--blue-hover: #f3f4f6;--gold: #8a6a2f;--gold-light: #a67c35;--gold-dim: rgba(138,106,47,.1);--gold-border: #d1d5db;--white: #111827;--white-80: rgba(17,24,39,.8);--white-50: rgba(17,24,39,.5);--white-20: rgba(17,24,39,.2);--white-10: rgba(17,24,39,.08);--text-main: #374151;--text-muted: #6b7280;--danger: #b91c1c;--warn: #b45309;--success: #047857;color:var(--text-main);background:var(--blue-deep);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans TC,Microsoft JhengHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--blue-deep)}a{color:var(--gold)}button,input,select,textarea{font:inherit}.shell{width:min(1200px,calc(100% - 32px));margin:0 auto;padding:28px 0 48px}.shell--center{display:grid;min-height:100vh;place-items:center;background:var(--blue-deep)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:28px;border:1px solid rgba(255,255,255,.18);background:#ffffff14;border-radius:10px;padding:18px 20px}.topbar-brand{display:flex;align-items:center;gap:16px}.topbar h1{color:#fff}.rotary-logo{height:56px;width:auto;flex-shrink:0;background:#fff;border:1px solid var(--gold-border);border-radius:8px;padding:6px 10px}.eyebrow{margin:0 0 2px;color:var(--gold);font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:clamp(1.3rem,3vw,2rem);font-weight:800;line-height:1.1;color:var(--white);letter-spacing:-.01em}h2{margin-bottom:14px;font-size:.95rem;font-weight:700;color:var(--gold);letter-spacing:.04em;text-transform:uppercase}h4{margin:0 0 .5rem;font-size:.72rem;font-weight:700;color:var(--gold);letter-spacing:.08em;text-transform:uppercase}.auth-panel{width:min(420px,100%);padding:32px;border:1px solid var(--gold-border);border-radius:12px;background:var(--blue-panel);box-shadow:0 24px 60px #0f172a1f;text-align:center}.auth-panel .rotary-logo{width:72px;height:72px;margin:0 auto 16px;display:block}.auth-panel h1{margin-bottom:4px;font-size:1.4rem}.auth-panel label{display:grid;gap:7px;margin-top:18px;text-align:left;color:var(--text-muted);font-size:.85rem;font-weight:700;letter-spacing:.04em}.auth-panel input{min-height:44px;border:1px solid var(--gold-border);border-radius:7px;padding:0 12px;background:var(--white-10);color:var(--white)}.auth-panel input:focus{outline:2px solid var(--gold);outline-offset:1px}.auth-panel button{width:100%;min-height:46px;margin-top:22px;border:0;border-radius:7px;background:var(--gold);color:#fff;font-weight:800;font-size:1rem;cursor:pointer;transition:background .15s}.auth-panel button:hover{background:var(--gold-light)}.form-message,.notice{color:var(--danger);font-size:.88rem}.icon-button{display:inline-grid;flex:0 0 auto;width:36px;height:36px;place-items:center;border:1px solid var(--gold-border);border-radius:6px;background:var(--white-10);color:var(--gold);cursor:pointer;transition:background .15s}.icon-button:hover{background:var(--gold-dim)}.icon-button:disabled{cursor:wait;opacity:.55}.icon-button--danger{color:var(--danger);border-color:#f871714d}.icon-button--danger:hover{background:#f8717126}.row-actions{display:flex;flex:0 0 auto;align-items:center;gap:6px}.row-actions a{display:inline-grid;width:36px;height:36px;place-items:center;color:var(--gold)}.row-tail{display:grid;gap:6px;justify-items:start;min-width:0}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px}.stat-card{position:relative;display:grid;gap:10px;min-height:110px;padding:18px 20px;border:1px solid var(--gold-border);border-radius:10px;background:var(--blue-panel);box-shadow:0 10px 30px #0f172a0f;cursor:pointer;transition:background .15s,border-color .15s;overflow:hidden}.stat-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--gold);border-radius:10px 10px 0 0}.stat-card:hover{background:var(--blue-hover);border-color:var(--gold)}.stat-card span{color:var(--gold);font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.stat-card strong{font-size:2.4rem;font-weight:800;color:var(--white);line-height:1}.stat-card--warn:before{background:var(--warn)}.stat-card--danger:before{background:var(--danger)}.stat-card--success:before{background:var(--success)}.kpi-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:100;display:grid;place-items:center;padding:16px}.kpi-modal{width:min(640px,100%);max-height:80vh;overflow-y:auto;border:1px solid var(--gold-border);border-radius:12px;background:var(--blue-panel);box-shadow:0 32px 80px #0f172a33}.kpi-modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px;border-bottom:1px solid var(--gold-border);position:sticky;top:0;background:var(--blue-panel);z-index:1}.kpi-modal-header h3{margin:0;font-size:1rem;font-weight:700;color:var(--gold)}.kpi-modal-body{padding:16px 22px}.kpi-task-row{display:grid;grid-template-columns:minmax(0,1fr) 90px 100px;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--white-10);font-size:.875rem}.kpi-task-row:last-child{border-bottom:none}.kpi-task-row strong{display:block;color:var(--white);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpi-task-row span{color:var(--text-muted);font-size:.8rem}.kpi-project-row{display:grid;grid-template-columns:minmax(0,1fr) 92px 110px;gap:12px;align-items:center;width:100%;border:0;border-bottom:1px solid var(--white-10);padding:12px 0;background:transparent;color:inherit;text-align:left;cursor:pointer}.kpi-project-row:hover strong{color:var(--gold)}.kpi-project-row--head{cursor:default;color:var(--gold);font-size:.75rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.kpi-project-row--head:hover strong{color:inherit}.kpi-project-row strong{display:block;overflow:hidden;color:var(--white);text-overflow:ellipsis;white-space:nowrap;transition:color .12s}.kpi-project-row span{display:block;color:var(--text-muted);font-size:.82rem}.content-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.panel{min-width:0;padding:20px;border:1px solid var(--gold-border);border-radius:10px;background:var(--blue-panel);box-shadow:0 10px 30px #0f172a0d}.panel--wide{grid-column:1 / -1}.panel-heading{display:flex;align-items:center;gap:8px;color:var(--gold)}.panel-heading h2{margin-bottom:0}.panel-action{margin-left:auto}.segmented-control{display:inline-flex;margin-left:auto;overflow:hidden;border:1px solid var(--gold-border);border-radius:6px}.segmented-control button{min-width:44px;border:0;border-right:1px solid var(--gold-border);padding:6px 12px;background:transparent;color:var(--text-muted);font-weight:700;font-size:.82rem;cursor:pointer;transition:background .12s,color .12s}.segmented-control button:last-child{border-right:0}.segmented-control button.is-active{background:var(--gold);color:#fff}.btn-add{display:inline-flex;align-items:center;gap:6px;min-height:34px;border:1px solid var(--gold);border-radius:6px;padding:0 12px;background:transparent;color:var(--gold);font-size:.82rem;font-weight:700;cursor:pointer;transition:background .14s}.btn-add:hover{background:var(--gold-dim)}.list{display:grid;gap:0}.list-row{display:flex;min-height:52px;align-items:center;justify-content:space-between;gap:14px;border-top:1px solid var(--white-10);padding:10px 0}.list-row:first-child{border-top:none}.list-row div,.task-table__row{min-width:0}.list-row p{margin:3px 0 0;color:var(--text-muted);font-size:.84rem;line-height:1.4}.list-row strong,.task-table__row strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--white)}.list-row span,.task-table span{display:block;color:var(--text-muted);font-size:.84rem;line-height:1.4}.announcement-row,.project-list-row{align-items:flex-start}.project-list-main{display:grid;flex:1 1 auto;gap:10px;min-width:0}.project-title-button{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;border:0;padding:0;background:transparent;color:inherit;text-align:left;cursor:pointer}.project-title-button strong{min-width:0}.project-title-button svg{flex:0 0 auto;color:var(--gold)}.project-detail{display:grid;gap:2px}.project-page{display:grid;gap:16px}.back-button{display:inline-flex;width:fit-content;align-items:center;gap:8px;min-height:36px;border:1px solid var(--gold-border);border-radius:6px;padding:0 12px;background:var(--blue-panel);color:var(--text-main);font-weight:700;cursor:pointer}.back-button:hover{background:var(--blue-hover)}.project-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border:1px solid var(--gold-border);border-radius:10px;padding:22px;background:var(--blue-panel);box-shadow:0 10px 30px #0f172a0d}.project-hero h2{margin:0 0 10px;color:var(--white);font-size:clamp(1.4rem,3vw,2rem);letter-spacing:0;text-transform:none}.project-hero p{margin:0;color:var(--text-muted);line-height:1.7}.project-detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.detail-card{display:grid;gap:8px;border:1px solid var(--gold-border);border-radius:8px;padding:16px;background:var(--blue-panel)}.detail-card span,.detail-list span,.detail-table__head span{color:var(--text-muted);font-size:.76rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.detail-card strong,.detail-list strong,.detail-table__row strong{color:var(--white)}.detail-list{display:grid;gap:12px}.detail-list div{display:grid;gap:4px;border-top:1px solid var(--white-10);padding-top:12px}.detail-list div:first-child{border-top:0;padding-top:0}.detail-list p{margin:0;color:var(--text-main);line-height:1.6}.detail-table{display:grid;gap:0}.detail-table__head,.detail-table__row{display:grid;grid-template-columns:minmax(0,1.6fr) 100px 140px 110px;gap:12px;align-items:center;border-top:1px solid var(--white-10);padding:10px 0}.detail-table__head{border-top:0;padding-top:0}.detail-table__row span{color:var(--text-muted);font-size:.84rem}.detail-table__row strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-row--meeting{padding:0;flex-direction:column;align-items:stretch;border-top:1px solid var(--white-10)}.list-row--meeting:first-child{border-top:none}.meeting-row-header{display:flex;width:100%;align-items:flex-start;justify-content:space-between;background:none;border:none;cursor:pointer;padding:12px 0;text-align:left;gap:.5rem;color:inherit}.meeting-row-header:hover .meeting-title{color:var(--gold-light)}.meeting-row-meta{display:grid;gap:2px;min-width:0}.meeting-title{display:block;font-weight:700;color:var(--white);transition:color .12s;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meeting-date{font-size:.8rem;color:var(--gold);display:block}.meeting-detail{border-top:1px solid var(--white-10);padding:1rem 0;display:grid;gap:1.25rem}.meeting-detail-section p{margin:0;font-size:.875rem;line-height:1.6;color:var(--text-main)}.meeting-notes{font-family:inherit;font-size:.85rem;line-height:1.6;color:var(--text-muted);white-space:pre-wrap;margin:0}.meeting-notes--preview{max-height:3.2em;overflow:hidden}.meeting-decisions{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}.meeting-decisions li{display:flex;gap:.75rem;font-size:.875rem;line-height:1.6;color:var(--text-main)}.decision-index{flex-shrink:0;width:1.4rem;height:1.4rem;background:var(--gold);color:var(--blue-deep);border-radius:50%;font-size:.68rem;font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:.2rem}.action-items-table{display:grid;gap:.2rem}.action-items-table__head,.action-items-table__row{display:grid;grid-template-columns:3fr 1.5fr 1fr;gap:.5rem;padding:.4rem .6rem;font-size:.82rem;border-radius:4px}.action-items-table__head{font-weight:700;color:var(--gold);border-bottom:1px solid var(--gold-border);border-radius:0}.action-items-table__row{color:var(--text-main)}.action-items-table__row:nth-child(2n){background:var(--white-10)}.add-meeting-form{border-top:1px solid var(--gold-border);margin-top:12px;padding-top:16px;display:grid;gap:12px}.add-meeting-form .form-actions{margin-top:4px}.task-table{display:grid;gap:6px}.task-table__head,.task-table__row{display:grid;grid-template-columns:minmax(0,1.5fr) 96px 112px;gap:12px;align-items:center}.task-table__head{color:var(--gold);font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.task-table__row{min-height:40px;border-top:1px solid var(--white-10);padding-top:6px}.edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%}.edit-grid label{display:grid;gap:5px;color:var(--text-muted);font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.edit-grid input,.edit-grid select,.edit-grid textarea{width:100%;min-height:36px;border:1px solid var(--gold-border);border-radius:6px;padding:7px 9px;color:var(--white);background:var(--white-10)}.edit-grid input:focus,.edit-grid select:focus,.edit-grid textarea:focus{outline:2px solid var(--gold);outline-offset:1px}.edit-grid textarea{min-height:76px;resize:vertical}.edit-grid select option{background:var(--blue-deep);color:var(--white)}.add-project-form{display:grid;gap:12px;margin:14px 0;border-top:1px solid var(--white-10);border-bottom:1px solid var(--white-10);padding:14px 0}.form-actions{display:flex;flex-wrap:wrap;gap:8px}.form-actions button{min-height:36px;border:1px solid var(--gold-border);border-radius:6px;padding:0 14px;background:transparent;color:var(--text-main);font-weight:700;font-size:.85rem;cursor:pointer;transition:background .12s}.form-actions button:hover{background:var(--white-10)}.form-actions button:first-child{border-color:var(--gold);background:var(--gold);color:#fff}.form-actions button:first-child:hover{background:var(--gold-light)}.empty{margin:8px 0 0;color:var(--text-muted);font-size:.88rem}.gantt-scroll{overflow-x:auto;padding-bottom:4px}.gantt-chart{display:grid;gap:12px;min-width:800px}.gantt-axis,.gantt-row{display:grid;grid-template-columns:240px minmax(0,1fr);gap:16px;align-items:center}.gantt-timeline,.gantt-track{position:relative;min-height:32px;border-left:1px solid var(--gold-border);border-right:1px solid var(--gold-border);background:repeating-linear-gradient(to right,rgba(107,114,128,.14) 0,rgba(107,114,128,.14) 1px,transparent 1px,transparent 16.66%)}.gantt-axis{color:var(--gold);font-size:.75rem;font-weight:700;letter-spacing:.04em}.gantt-tick{position:absolute;top:50%;transform:translate(-50%,-50%);white-space:nowrap;color:var(--text-muted);font-size:.72rem}.gantt-project-meta{min-width:0}.gantt-project-meta strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--white);font-size:.9rem}.gantt-project-meta span{display:block;color:var(--gold);font-size:.78rem}.gantt-track{border-radius:6px}.gantt-bar{position:absolute;top:5px;bottom:5px;display:flex;min-width:28px;align-items:center;overflow:hidden;border-radius:5px;padding:0 8px;background:var(--blue-hover);border:1px solid var(--gold-border);color:var(--text-main);font-size:.75rem;font-weight:700}.gantt-bar--project{background:#002868;color:#fff;border-color:#002868}.gantt-bar--project i{position:absolute;inset:0 auto 0 0;border-radius:inherit;background:var(--gold);opacity:.4}.gantt-bar span{position:relative;z-index:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:820px){.stats-grid{grid-template-columns:repeat(2,1fr)}.content-grid{grid-template-columns:1fr}.topbar{align-items:flex-start}.project-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-table__head,.detail-table__row{grid-template-columns:minmax(0,1fr) 90px}}@media(max-width:560px){.shell{width:min(100% - 24px,1200px);padding:20px 0 40px}h1{font-size:1.2rem}.auth-panel{padding:22px}.stats-grid{grid-template-columns:1fr 1fr;gap:10px}.content-grid{gap:12px}.panel{padding:14px}.rotary-logo{width:40px;height:40px}.task-table__head,.task-table__row{grid-template-columns:minmax(0,1fr);gap:6px}.edit-grid{grid-template-columns:1fr}.gantt-chart{min-width:680px}.gantt-axis,.gantt-row{grid-template-columns:180px minmax(0,1fr);gap:10px}.action-items-table__head,.action-items-table__row{grid-template-columns:2fr 1.2fr .8fr}.kpi-task-row{grid-template-columns:minmax(0,1fr) 80px}.project-hero{display:grid;padding:16px}.project-detail-grid{grid-template-columns:1fr}.detail-table__head{display:none}.detail-table__row{grid-template-columns:1fr;gap:6px}}
