:root{font-family:system-ui,-apple-system,"Segoe UI","Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;color:#182b31;background:#f6f8f6;font-synthesis:none;--ink:#182b31;--muted:#788586;--line:#e4e9e6;--green:#176850;--mint:#e6f3e9;--paper:#fff;--shade:#f6f8f6}
*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.4}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid #8ccdb6;outline-offset:2px}
.shell{max-width:640px;margin:0 auto;padding:22px 18px calc(108px + env(safe-area-inset-bottom))}.header{display:flex;align-items:center;justify-content:space-between;margin:6px 0 28px}.brand{display:flex;align-items:center;gap:11px}.brand-mark{width:39px;height:39px;border-radius:13px;display:grid;place-items:center;background:#1e715a;color:white;font-size:22px;font-weight:800;box-shadow:0 6px 16px #1e715a20}.brand-title{font-size:17px;font-weight:800;letter-spacing:.02em}.brand-sub{font-size:11px;color:var(--muted);margin-top:2px}.avatar{height:38px;width:38px;background:white;color:var(--green);border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;font-size:17px;font-weight:800}
.eyebrow{font-size:12px;color:var(--muted);letter-spacing:.08em;margin:0 0 8px}.page-title{font-size:28px;letter-spacing:-.04em;line-height:1.3;margin:0;font-weight:780}.page-sub{color:var(--muted);font-size:13px;margin:8px 0 22px;line-height:1.7}.hgroup{display:flex;justify-content:space-between;align-items:flex-end;gap:10px}.pill{border:1px solid #dcebe4;background:#edf7f0;color:#246e54;border-radius:30px;padding:5px 10px;font-size:11px;font-weight:700;white-space:nowrap}
.calendar{background:white;border:1px solid var(--line);border-radius:23px;padding:18px 14px 12px;box-shadow:0 8px 28px #1b413008}.cal-top{display:flex;align-items:center;justify-content:space-between;padding:2px 5px 16px}.cal-month{font-size:16px;font-weight:750}.cal-actions{display:flex;align-items:center;gap:7px}.icon-btn{width:32px;height:32px;display:grid;place-items:center;background:#f7f9f8;color:#41534e;border-radius:10px;border:1px solid transparent;font-size:19px;line-height:1}.icon-btn:hover{background:#e9f1ed}.today-btn{font-size:12px;background:white;border:1px solid var(--line);border-radius:9px;color:#51645b;padding:7px 9px}.weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center}.weekdays{margin-bottom:4px}.weekday{font-size:11px;color:#9ba5a1;padding:9px 0}.day{min-height:45px;border:0;background:transparent;border-radius:13px;color:#293c39;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:13px;font-weight:600}.day:hover{background:#eff5f1}.day.is-selected{background:#216c53;color:#fff}.day.is-today:not(.is-selected){box-shadow:inset 0 0 0 1.5px #2b7d62}.day.is-other{color:#b3bdb8}.day.is-selected.is-other{color:white}.dots{display:flex;gap:3px;height:4px}.dot{width:4px;height:4px;border-radius:50%;background:#479675}.is-selected .dot{background:#d6f6e5}
.section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:28px 2px 12px}.section-title{font-size:17px;font-weight:750;margin:0}.mini-label{font-size:12px;color:var(--muted)}.text-btn{background:none;border:0;color:var(--green);font-size:12px;font-weight:700;padding:6px}
.events{display:flex;flex-direction:column;gap:10px}.event-card{background:#fff;border:1px solid var(--line);border-radius:19px;overflow:hidden;box-shadow:0 4px 18px #1b413006}.event-main{width:100%;text-align:left;border:0;background:none;display:flex;align-items:center;gap:13px;padding:16px}.event-time{width:45px;flex:none;text-align:center;color:#3d4f4b;font-size:13px;font-weight:750}.event-divider{height:41px;width:3px;border-radius:6px;background:#87bca5;flex:none}.event-text{min-width:0;flex:1}.event-title{font-size:14px;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-sub{font-size:11px;color:#91a09a;margin-top:5px}.event-arrow{font-size:18px;color:#9aa6a1;transition:transform .2s}.event-card.is-open .event-arrow{transform:rotate(180deg)}.detail{padding:0 15px 16px}.detail-notes{font-size:12px;color:#697e73;line-height:1.7;border-top:1px solid var(--line);padding:13px 4px 9px;white-space:pre-wrap;overflow-wrap:anywhere}.detail-tools{display:flex;gap:10px;justify-content:flex-end;padding:3px 2px 12px}.small-action{background:transparent;border:0;color:#627870;font-size:12px;padding:5px}.danger{color:#b64b4b}.fold{border:1px solid var(--line);border-radius:13px;margin:8px 0;overflow:hidden}.fold-button{width:100%;display:flex;align-items:center;gap:9px;text-align:left;background:#fbfcfb;padding:13px 12px;border:0;color:#273d33}.fold-icon{height:26px;width:26px;background:#fff0e7;color:#ba7747;border-radius:9px;display:grid;place-items:center;font-size:14px}.fold-icon.green{background:#e6f3eb;color:var(--green)}.fold-title{flex:1;font-weight:750;font-size:13px}.count{color:#7c9085;font-size:11px}.fold-chevron{font-size:14px;color:#73867c}.fold-content{border-top:1px solid var(--line);padding:11px 12px 10px}.risk-item{padding:10px 2px;border-bottom:1px solid #f0f2f0}.risk-item:last-of-type{border:0}.risk-name{font-size:13px;font-weight:730;margin:0 0 7px;line-height:1.55}.risk-plan{color:#697b71;font-size:12px;line-height:1.6;margin:0 0 3px}.risk-plan strong{color:#33473d;font-weight:700}.risk-top{display:flex;gap:8px;align-items:flex-start;justify-content:space-between}.trash-mini{border:0;background:transparent;color:#a3aea7;font-size:17px;padding:0 4px}.todo-row{display:flex;align-items:flex-start;gap:11px;padding:10px 2px;border-bottom:1px solid #f1f3f1}.todo-row:last-of-type{border:0}.todo-row input{width:19px;height:19px;accent-color:var(--green);margin:1px 0 0;flex:none}.todo-copy{flex:1}.todo-copy.done{text-decoration:line-through;color:#a3b0aa}.todo-main{font-size:13px;line-height:1.6;font-weight:650}.todo-when{font-size:11px;color:#8b9c93;margin-top:3px}.outline-btn{border:1px dashed #c9dcd0;background:#fcfefd;color:var(--green);width:100%;padding:10px;border-radius:10px;margin-top:9px;font-size:12px;font-weight:750}.hint{font-size:11px;color:#87968e;line-height:1.6;margin:9px 2px 0}
.empty{background:white;border:1px dashed #d8e5dc;border-radius:19px;text-align:center;padding:32px 20px}.empty-symbol{height:53px;width:53px;background:#edf6f0;border-radius:20px;display:grid;place-items:center;margin:0 auto 14px;font-size:26px}.empty h3{margin:0 0 8px;font-size:16px}.empty p{font-size:13px;color:#85958b;line-height:1.8;margin:0 0 17px}.primary{background:#1f6e55;color:white;border:0;border-radius:13px;font-size:13px;font-weight:750;padding:13px 19px;box-shadow:0 5px 13px #1c69521f}.primary:hover{background:#185940}.secondary{background:#edf3ee;color:#1f6e55;border:0;border-radius:13px;font-size:13px;font-weight:730;padding:12px 17px}.main-fab{position:fixed;bottom:calc(85px + env(safe-area-inset-bottom));right:max(22px, calc((100vw - 640px)/2 + 18px));height:50px;border-radius:16px;padding:0 19px;box-shadow:0 13px 30px #1b6d5350;z-index:5}
.bottom-nav{position:fixed;z-index:10;bottom:0;left:0;right:0;background:#ffffffec;backdrop-filter:blur(12px);border-top:1px solid var(--line);display:flex;justify-content:center;padding:11px 12px calc(10px + env(safe-area-inset-bottom))}.bottom-inner{width:min(100%,640px);display:grid;grid-template-columns:repeat(3,1fr)}.nav-btn{display:flex;align-items:center;flex-direction:column;gap:4px;border:0;background:none;color:#96a49a;font-size:10px;font-weight:700;padding:3px}.nav-btn.active{color:var(--green)}.nav-symbol{font-size:20px;line-height:1.15}
.lesson-item,.setting-card{background:white;border:1px solid var(--line);border-radius:17px;padding:16px;margin:10px 0}.lesson-item h3{font-size:14px;margin:9px 0 7px}.lesson-item p,.setting-card p{font-size:12px;line-height:1.8;color:#74847b;margin:0}.lesson-item .lesson-action{color:#2d6953;font-size:12px;margin:8px 0}.lesson-tools{display:flex;justify-content:space-between;align-items:center;margin-top:10px}.tag{display:inline-flex;align-items:center;background:#edf4ef;color:#3e7658;border-radius:7px;font-size:10px;padding:4px 7px;font-weight:700}.setting-card h3{font-size:14px;margin:0 0 9px}.setting-card .row{display:flex;gap:9px;flex-wrap:wrap;margin-top:15px}.setting-card button{font-size:12px}.muted{color:var(--muted)}.notice{padding:13px 15px;border-radius:13px;background:#edf6f0;color:#4b7660;font-size:12px;line-height:1.7;margin:14px 0}.notice.warning{background:#fff5e8;color:#8a6938}
.editor{border:0;border-radius:23px;box-shadow:0 24px 85px #14281d50;width:min(94vw,490px);max-height:min(90vh,860px);padding:0;background:white;color:var(--ink)}.editor::backdrop{background:#12282085;backdrop-filter:blur(3px)}.editor form{padding:22px;display:flex;flex-direction:column;gap:13px;overflow-y:auto;max-height:90vh}.modal-head{display:flex;justify-content:space-between;align-items:center;margin:0 0 5px}.modal-head h2{font-size:20px;margin:0}.close-btn{border:0;background:#f1f5f2;border-radius:9px;height:31px;width:31px;font-size:19px}.field{display:flex;flex-direction:column;gap:7px}.field label{font-size:12px;font-weight:750;color:#475c50}.field input,.field select,.field textarea{width:100%;min-height:43px;border-radius:11px;border:1px solid #dce5df;padding:10px 12px;background:#fcfdfc;color:#273d33;font-size:14px}.field textarea{min-height:75px;resize:vertical}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.modal-foot{display:flex;gap:10px;margin-top:8px}.modal-foot button{flex:1}.tiny{font-size:11px;color:#85958b;line-height:1.6}.toast{opacity:0;position:fixed;bottom:calc(90px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%,10px);z-index:50;pointer-events:none;background:#263f33;color:white;border-radius:11px;padding:11px 15px;font-size:12px;max-width:90vw;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}.loading{height:60vh;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#74867a}.spinner{width:30px;height:30px;border:3px solid #d9eae0;border-top-color:#29765a;border-radius:100%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
@media(min-width:640px){.shell{padding-top:32px}.page-title{font-size:31px}.calendar{padding:23px 25px 19px}.day{min-height:52px}.bottom-nav{padding-top:14px}.main-fab{bottom:92px}}
@media(max-width:370px){.shell{padding-left:12px;padding-right:12px}.calendar{padding:14px 9px}.event-main{padding:14px 11px;gap:10px}.event-time{width:39px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Quick risk analysis (v2) */
.quick-entry{background:white;border:1px solid var(--line);border-radius:20px;padding:18px;display:flex;flex-direction:column;gap:13px}.quick-entry textarea{min-height:138px;line-height:1.65}.quick-go{width:100%}.quick-result{margin-top:20px}.quick-detail{background:white;border:1px solid var(--line);border-radius:15px;margin-top:10px;overflow:hidden}.quick-detail summary{cursor:pointer;padding:15px;font-size:14px;font-weight:750;list-style:none;background:#fbfcfb}.quick-detail summary::-webkit-details-marker{display:none}.quick-detail summary:after{content:'⌄';float:right;color:#82948b}.quick-detail[open] summary:after{content:'⌃'}.quick-detail-body{border-top:1px solid var(--line);padding:10px 15px}.bottom-inner{grid-template-columns:repeat(4,minmax(0,1fr))}
