:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--brand-900: #1e4a1e;--brand-800: #2c3a22;--brand-700: #3a6b3a;--brand-600: #46683f;--brand-500: #557c55;--brand-400: #8aaa7a;--brand-300: #a6cf98;--brand-200: #cfe6c0;--brand-100: #d4eac8;--brand-50: #eef7e6;--bg-app: #f2ffe9;--bg-subtle: #eef7e6;--bg-muted: #f0f9ea;--surface: #ffffff;--surface-2: #fafdf8;--border: #d9ead0;--border-strong: #cfe0c8;--text-strong: #1e4a1e;--text: #2c3a22;--text-muted: #5a6a50;--text-faint: #8aaa7a;--text-on-brand: #ffffff;--primary: #3a6b3a;--primary-hover:#46683f;--primary-soft: #eef7e6;--danger: #c0392b;--danger-soft: #fdecea;--warn: #b5651d;--accent-orange:#b5651d;--focus-ring: rgba(58, 107, 58, .35);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 32px;--sp-8: 40px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 22px;--r-pill: 999px;--sh-1: 0 1px 2px rgba(46, 74, 34, .06), 0 1px 3px rgba(46, 74, 34, .05);--sh-2: 0 2px 8px rgba(46, 74, 34, .08), 0 1px 3px rgba(46, 74, 34, .06);--sh-3: 0 8px 24px rgba(46, 74, 34, .12), 0 2px 6px rgba(46, 74, 34, .08);--font-sans: "Nunito", "GenSenRounded2TC", -apple-system, BlinkMacSystemFont, sans-serif;--fs-xs: 12px;--fs-sm: 13px;--fs-md: 14px;--fs-base: 15px;--fs-lg: 17px;--fs-xl: 20px;--fs-2xl: 24px;--fs-3xl: 30px;--lh-tight: 1.25;--lh-base: 1.5;--fw-regular: 400;--fw-medium: 600;--fw-bold: 700;--fw-heavy: 800;--t-fast: .12s ease;--t-base: .2s ease}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;min-height:100vh;background:#f2ffe9}a{color:inherit;text-decoration:none}@font-face{font-family:GenSenRounded2TC;src:url(/assets/GenSenRounded2TC-EL-Dg50UhPO.otf) format("opentype");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:GenSenRounded2TC;src:url(/assets/GenSenRounded2TC-L-BKsbBVf3.otf) format("opentype");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:GenSenRounded2TC;src:url(/assets/GenSenRounded2TC-R-C4in6dH3.otf) format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:GenSenRounded2TC;src:url(/assets/GenSenRounded2TC-M-DrThLlqC.otf) format("opentype");font-weight:500 600;font-style:normal;font-display:swap}@font-face{font-family:GenSenRounded2TC;src:url(/assets/GenSenRounded2TC-B-DOEUvt1K.otf) format("opentype");font-weight:700 800;font-style:normal;font-display:swap}@font-face{font-family:GenSenRounded2TC;src:url(/assets/GenSenRounded2TC-H-D_fmtf4m.otf) format("opentype");font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:Nunito;src:url(/assets/Nunito-VariableFont_wght-CfknUHFh.ttf) format("truetype");font-weight:200 900;font-style:normal;font-display:swap}html,body{max-width:100%;overflow-x:hidden}.app{display:flex;flex-direction:column;min-height:100vh;font-family:Nunito,GenSenRounded2TC,-apple-system,BlinkMacSystemFont,sans-serif;background:#f2ffe9}.ui-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-1)}.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);font-family:var(--font-sans);font-size:var(--fs-md);font-weight:var(--fw-bold);line-height:1;padding:10px 16px;border-radius:var(--r-md);border:1px solid transparent;cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast);white-space:nowrap}.ui-btn:disabled{opacity:.5;cursor:not-allowed}.ui-btn:active:not(:disabled){transform:translateY(1px)}.ui-btn--primary{background:var(--primary);color:var(--text-on-brand);box-shadow:var(--sh-1)}.ui-btn--primary:hover:not(:disabled){background:var(--primary-hover);box-shadow:var(--sh-2)}.ui-btn--ghost{background:var(--surface);color:var(--brand-700);border-color:var(--border-strong)}.ui-btn--ghost:hover:not(:disabled){background:var(--bg-muted);border-color:var(--brand-300)}.ui-btn--danger{background:var(--surface);color:var(--danger);border-color:#f0c9c4}.ui-btn--danger:hover:not(:disabled){background:var(--danger-soft)}.ui-input{width:100%;font-family:var(--font-sans);font-size:var(--fs-base);color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:10px 14px;transition:border-color var(--t-fast),box-shadow var(--t-fast)}.ui-input::placeholder{color:var(--text-faint)}.ui-input:focus{outline:none;border-color:var(--brand-500);box-shadow:0 0 0 3px var(--focus-ring)}.ui-badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);font-weight:var(--fw-bold);line-height:1;padding:4px 10px;border-radius:var(--r-pill);background:var(--brand-50);color:var(--brand-700)}.ui-badge--warn{background:#fbead9;color:var(--warn)}.ui-badge--danger{background:var(--danger-soft);color:var(--danger)}.ui-segmented{display:inline-flex;gap:var(--sp-2);flex-wrap:wrap}.ui-segmented__item{font-family:var(--font-sans);font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--brand-700);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-pill);padding:9px 18px;cursor:pointer;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast);white-space:nowrap}.ui-segmented__item:hover:not(.is-active){background:var(--bg-muted)}.ui-segmented__item.is-active{background:var(--primary);color:var(--text-on-brand);border-color:var(--primary);box-shadow:var(--sh-1)}.ui-stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-1);padding:var(--sp-5);display:flex;flex-direction:column;gap:2px}.ui-stat-card__value{font-size:var(--fs-2xl);font-weight:var(--fw-heavy);color:var(--brand-700);line-height:1.1}.ui-stat-card__value--warn{color:var(--accent-orange)}.ui-stat-card__label{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-muted)}.ui-table{width:100%;border-collapse:collapse;font-size:var(--fs-md)}.ui-table thead th{text-align:left;font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-muted);padding:12px 14px;border-bottom:1px solid var(--border);background:var(--bg-subtle)}.ui-table tbody td{padding:14px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.ui-table tbody tr{transition:background var(--t-fast)}.ui-table tbody tr:hover{background:var(--bg-muted)}.ui-table tbody tr:last-child td{border-bottom:none}.ui-btn:focus-visible,.ui-segmented__item:focus-visible,.ui-input:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring)}.top-bar{background:#3a6b3a;color:#fff;height:58px;min-height:58px;display:flex;align-items:center;padding:0 14px;gap:10px;position:sticky;top:0;z-index:300;flex-shrink:0;box-shadow:0 2px 10px #0000002e}.topbar-toggle{background:none;border:none;color:#fff;cursor:pointer;padding:6px;border-radius:6px;display:flex;align-items:center;opacity:.8;flex-shrink:0;transition:background .15s,opacity .15s}.topbar-toggle:hover{background:#ffffff1f;opacity:1}.topbar-logo-wrap{width:44px;height:44px;background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:3px;box-shadow:0 1px 5px #0003;box-sizing:border-box}.topbar-logo-btn{border:none;cursor:pointer;transition:box-shadow .15s,transform .15s}.topbar-logo-btn:hover{box-shadow:0 2px 10px #0000004d;transform:scale(1.06)}.topbar-logo-btn:active{transform:scale(.97)}.topbar-logo{width:38px;height:38px;object-fit:contain;flex-shrink:0}.topbar-brand{display:flex;flex-direction:column;flex-shrink:0}.topbar-title{font-size:1.08rem;font-weight:800;color:#fff;line-height:1.2;letter-spacing:.01em}.topbar-sub{font-size:.65rem;color:#ffffffb8;line-height:1.3;letter-spacing:.04em}.topbar-spacer{flex:1}.topbar-themes{display:flex;gap:2px;flex-shrink:0}.theme-tab{background:none;border:none;color:#ffffffbf;font-family:inherit;font-weight:600;font-size:14px;padding:7px 14px;border-radius:6px;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap;position:relative}.theme-tab:hover{background:#ffffff1a;color:#fff}.theme-tab.active{color:#fff;background:#ffffff26}.theme-tab.active:after{content:"";position:absolute;bottom:0;left:14px;right:14px;height:2px;background:#fffc;border-radius:1px}.topbar-social{display:flex;align-items:center;gap:4px;flex-shrink:0}.topbar-social-link{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;color:#ffffffd1;transition:color .15s,background .15s;text-decoration:none}.topbar-social-link:hover{color:#fff;background:#ffffff26}.topbar-social-img{filter:brightness(0) invert(1);opacity:.82;transition:opacity .15s}.topbar-social-link:hover .topbar-social-img{opacity:1}.topbar-auth{flex-shrink:0}.topbar-user{display:flex;align-items:center;gap:6px;color:#fff;text-decoration:none;font-size:12.5px;font-weight:600;padding:5px 10px;border-radius:6px;max-width:150px;overflow:hidden}.topbar-user span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-user:hover{background:#ffffff1a}.topbar-login-btn{background:#ffffff1f;border:1.5px solid rgba(255,255,255,.45);color:#fff;font-family:inherit;font-weight:700;font-size:12.5px;padding:5px 12px;border-radius:20px;cursor:pointer;white-space:nowrap;transition:background .15s}.topbar-login-btn:hover{background:#ffffff38}.app-body{display:flex;flex:1;min-height:0}.sidebar{width:256px;min-width:256px;background:#fff;border-right:1px solid #d9ead0;position:sticky;top:58px;height:calc(100vh - 58px);overflow:hidden;z-index:100;flex-shrink:0;transition:width .25s ease,min-width .25s ease}.sidebar:not(.open){width:0;min-width:0;border-right:none}.sidebar-inner{width:256px;min-width:256px;height:100%;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column}.sidebar-section-label{padding:9px 14px 8px;font-size:11.5px;font-weight:700;color:#1e4d1e;letter-spacing:.03em;border-bottom:1px solid #eef3e6;flex-shrink:0;white-space:nowrap}.sidebar-user-row{display:flex;align-items:center;gap:8px;padding:8px 14px;background:#f5fbf0;border-bottom:1px solid #eef3e6;text-decoration:none;color:#2c5c2c;font-size:13px;font-weight:600;flex-shrink:0}.sidebar-user-row svg{flex-shrink:0;color:#557c55}.sidebar-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-nav{padding:10px 8px;display:flex;flex-direction:column;gap:2px;border-bottom:1px solid #eef3e6;flex-shrink:0}.snl{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;color:#4a5a3a;text-decoration:none;font-weight:600;font-size:14px;transition:background .12s,color .12s}.snl svg{flex-shrink:0;color:#7a8a6b;transition:color .12s}.snl.active{background:#e8f5e1;color:#1e4a1e}.snl.active svg{color:#1e4a1e}.snl:not(.active):hover{background:#f3fbed;color:#2c5c2c}.snl:not(.active):hover svg{color:#557c55}.sidebar-filters{flex:1;overflow-y:auto;padding:10px 0 6px;min-height:0}.sf-search{display:block;width:calc(100% - 28px);margin:0 14px 10px;padding:8px 10px;border:1.5px solid #c8e0ba;border-radius:8px;font-family:inherit;font-size:13px;background:#f9fdf5;color:#333;box-sizing:border-box}.sf-search:focus{outline:none;border-color:#557c55}.sf-section{padding:6px 14px}.sf-label{font-size:10.5px;font-weight:700;color:#8a9a7a;text-transform:uppercase;letter-spacing:.08em;margin-bottom:5px}.sf-chips{display:flex;flex-wrap:wrap;gap:5px}.sf-chips .chip{padding:4px 10px;font-size:12px}.sf-cpd-row{display:flex;align-items:center;gap:8px;margin-bottom:5px}.sf-cpd-row .cpd-slider{flex:1}.sf-pending-chip{font-size:12px;padding:4px 10px}.sf-select{width:100%;padding:7px 10px;border:1.5px solid #c8e0ba;border-radius:8px;font-family:inherit;font-size:13px;color:#333;background:#f9fdf5;box-sizing:border-box}.sf-date-row{display:flex;gap:6px}.sf-date-select{flex:1;min-width:0;width:auto}.sidebar-bottom{padding:10px 14px 14px;border-top:1px solid #eef3e6;display:flex;flex-direction:column;gap:8px;flex-shrink:0}.sb-login-btn{width:100%}.sidebar-social{display:flex;gap:16px;align-items:center;padding:2px 0}.sidebar-social-link{display:flex;align-items:center;gap:6px;color:#557c55;font-size:.88rem;text-decoration:none;opacity:.85}.sidebar-social-link:hover{opacity:1;color:#3a6b3a}@media(min-width:769px){.sidebar-social{display:none}}.page-content{flex:1;min-width:0;padding:28px clamp(16px,3vw,36px) 60px;display:flex;flex-direction:column}.sidebar-overlay{display:none}.course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;align-items:start}.course-grid .course-card{margin-bottom:0}.category-select{display:flex;flex-wrap:wrap;gap:8px}.category-chip{border:1px solid #a6cf98;background:#fff;color:#557c55;padding:7px 12px;border-radius:16px;font-size:.82rem;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.category-chip:hover{background:#eef7e6}.category-chip.active{background:#557c55;color:#fff;border-color:#557c55}.category-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.chip.chip-clear{border-color:#e0c4a0;color:#b5651d}.course-categories{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}.course-category-tag{background:#eef7e6;color:#557c55;border:1px solid #cfe6c0;padding:3px 10px;border-radius:12px;font-size:.75rem}.course-date-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.course-date-row{margin-bottom:6px}.course-date-row input[type=date],.date-range input[type=date]{padding:8px 10px;border:1px solid #a6cf98;border-radius:8px;font-family:inherit;font-size:.95rem}.date-tools{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.date-range{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;font-size:.9rem;color:#557c55}.date-range-label{font-weight:700}.date-range-confirm-row{width:100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.date-range-error{width:100%;color:#c0392b;font-size:.85rem;margin:4px 0 0}.calendar-view{margin-top:8px;display:flex;flex-direction:column;flex:1;min-height:0}.cal-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px;flex-shrink:0}.cal-view-toggle{display:flex;gap:8px}.cal-month-nav{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:12px;flex-shrink:0}.cal-month-label{font-weight:var(--fw-bold);color:var(--brand-500);min-width:110px;text-align:center}.cal-nav-btn,.cal-today-btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--brand-500);border-radius:var(--r-md);padding:6px 12px;cursor:pointer;font-size:.9rem;transition:background var(--t-fast)}.cal-nav-btn:hover,.cal-today-btn:hover{background:var(--bg-subtle)}.cal-grid-wrap{display:flex;flex-direction:column;flex:1;min-height:0}.cal-weekdays-row{display:grid;grid-template-columns:repeat(7,1fr);flex-shrink:0}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:1fr;gap:3px;flex:1;min-height:0}.cal-weekday{text-align:center;font-size:.75rem;font-weight:var(--fw-bold);color:var(--brand-500);padding:4px 0}.cal-cell{min-height:64px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);padding:3px;overflow:hidden;transition:box-shadow var(--t-fast)}.cal-cell-empty{background:transparent;border:none}.cal-cell-today{border-color:var(--brand-500);box-shadow:inset 0 0 0 1px var(--brand-500)}.cal-daynum{font-size:.72rem;color:var(--text-faint);text-align:right;line-height:1;margin-bottom:2px}.cal-cell-today .cal-daynum{color:var(--brand-500);font-weight:var(--fw-bold)}.cal-pills{display:flex;flex-direction:column;gap:2px}.cal-pill{display:block;width:100%;border:none;border-radius:4px;color:#fff;font-size:.62rem;line-height:1.2;padding:2px 4px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.cal-pill:hover{filter:brightness(1.08)}.cal-agenda{display:flex;flex-direction:column;gap:8px}.cal-agenda-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:10px 12px;cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast)}.cal-agenda-item:hover{background:var(--bg-muted);border-color:var(--brand-300);box-shadow:var(--sh-1)}.cal-agenda-date{font-size:.78rem;color:var(--brand-500);font-weight:var(--fw-bold);margin-bottom:4px}.cal-agenda-body{display:flex;align-items:center;gap:8px}.cal-agenda-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.cal-agenda-name{flex:1;font-size:.92rem;color:var(--text)}.cal-agenda-mode{font-size:.72rem;color:var(--text-faint);white-space:nowrap}.cal-undated-hint{margin-top:14px;font-size:.78rem;color:var(--text-faint);text-align:center}.calendar-modal{position:fixed;inset:0;background:#00000080;display:flex;align-items:flex-start;justify-content:center;padding:20px;overflow-y:auto;z-index:1000}.calendar-modal-content{width:100%;max-width:460px;margin:auto}.calendar-modal-close{display:block;margin:0 0 8px auto;background:#fff;border:1px solid #ccc;border-radius:8px;padding:8px 14px;cursor:pointer;font-size:.9rem}.ig-caption{margin:24px 0 8px;padding:16px;border:1px solid #a6cf98;border-radius:10px;background:#f7fff0}.ig-caption-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}.ig-caption-head label{font-weight:700;color:#557c55}.ig-caption-badge{font-size:.72rem;background:#557c55;color:#fff;padding:2px 8px;border-radius:10px}.ig-caption-preview{margin:0;padding:12px;background:#fff;border:1px solid #d9ead0;border-radius:8px;font-family:inherit;font-size:.85rem;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:320px;overflow-y:auto;color:#333}.ig-caption-edit{width:100%;padding:12px;border:1px solid #557c55;border-radius:8px;font-family:inherit;font-size:.85rem;line-height:1.5;resize:vertical;box-sizing:border-box}.ig-caption-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.ig-btn{border:1px solid #a6cf98;background:#fff;color:#557c55;padding:8px 14px;border-radius:8px;font-size:.85rem;cursor:pointer;transition:background .15s,color .15s}.ig-btn:hover{background:#eef7e6}.ig-btn-copy{background:#557c55;color:#fff;border-color:#557c55;font-weight:600}.ig-btn-copy:hover{background:#46683f}.ig-btn-reset{color:#b5651d;border-color:#e0c4a0}.ig-caption-hint{margin:8px 0 0;font-size:.78rem;color:#777}.caption-btn{background:#fff;color:#557c55;border:1px solid #a6cf98;padding:8px 14px;border-radius:8px;font-size:.9rem;cursor:pointer}.loading-hint{color:#557c55;text-align:center;margin-top:60px;font-size:1.1rem}.loading-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f2ffe9}.loading-gif{width:340px;max-width:80vw;height:auto}.load-error{background:#fff3cd;border:1px solid #ffc107;border-radius:8px;padding:10px 14px;margin-bottom:16px;font-size:.9rem;color:#856404}.admin-whoami{font-size:.85rem;color:#557c55;margin:0 0 10px;text-align:right}.draft-banner{background:#f0fce8;border:1px solid #a6cf98;border-radius:8px;padding:10px 14px;margin-bottom:16px;font-size:.88rem;color:#3a6b3a}.draft-banner-main{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.draft-saved-time{color:#6a9a6a}.draft-clear-btn{margin-left:auto;background:transparent;border:1px solid #a6cf98;border-radius:6px;padding:3px 10px;font-size:.82rem;font-family:inherit;color:#557c55;cursor:pointer;white-space:nowrap}.draft-clear-btn:hover{background:#d4f0c4}.draft-banner-note{margin-top:6px;color:#a05000;font-size:.82rem}.draft-autosave-hint{font-size:.78rem;color:#8aa67a;margin:-10px 0 12px;text-align:right}.app-header{display:flex;align-items:center;gap:16px;margin-bottom:26px}.app-logo{width:88px;height:auto;flex-shrink:0}.app-header-text{min-width:0}.app h1{color:#557c55;margin:0 0 4px;font-weight:700;font-size:3rem;line-height:1.1}.app-header-text p{color:#666;margin:0;font-size:.95rem}@media(max-width:640px){.app-header{gap:12px;margin-bottom:20px}.app-logo{width:64px}.app h1{font-size:2.2rem}}.course-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--sh-1);margin-bottom:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-2);transition:box-shadow var(--t-base),border-color var(--t-base)}.cc-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3)}.cc-title{font-size:var(--fs-lg);color:var(--brand-900);margin:0;line-height:var(--lh-tight);font-weight:var(--fw-heavy)}.cc-mode-badge{flex-shrink:0;color:#fff;font-size:var(--fs-xs);font-weight:var(--fw-bold);padding:3px 11px;border-radius:var(--r-pill);white-space:nowrap}.cc-org{display:flex;flex-wrap:wrap;gap:4px 10px}.cc-org-item{color:var(--brand-500);font-weight:var(--fw-bold);font-size:14.5px}.cc-speaker{color:var(--text-muted);font-size:var(--fs-sm)}.cc-speaker .speaker-title{color:var(--text-faint)}.cc-row{display:flex;align-items:flex-start;gap:7px;font-size:var(--fs-sm);color:var(--text-muted)}.cc-row-icon{flex-shrink:0;color:var(--brand-500);line-height:1;margin-top:1px}.cc-row-text{min-width:0;overflow-wrap:anywhere;word-break:break-word}.cc-row-strong{font-size:var(--fs-md);color:var(--text);font-weight:var(--fw-medium)}.cc-row-muted{font-size:12.5px;color:var(--text-faint)}.cc-row-pre .cc-row-text{white-space:pre-line}.cc-promo{color:var(--warn)}.cc-row-promo .cc-row-text{color:var(--warn);font-weight:var(--fw-bold)}.cc-row-promo .cc-row-icon{color:var(--warn)}.cc-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;border-top:1px solid var(--bg-subtle);padding-top:var(--sp-3);margin-top:2px}.cc-cpd{font-size:12.5px;font-weight:var(--fw-bold);padding:4px 11px;border-radius:var(--r-pill)}.cc-cpd-confirmed{background:#eaf3de;color:#3b6d11}.cc-cpd-pending{background:#faeeda;color:var(--accent-orange)}.cc-cpd-unknown{background:var(--bg-subtle);color:var(--text-muted)}.course-card-clickable{cursor:pointer}.course-card-clickable:hover{box-shadow:var(--sh-2);border-color:var(--brand-300)}.course-card-clickable:focus-visible{outline:none;box-shadow:var(--sh-2),0 0 0 3px var(--focus-ring)}.results-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:20px}.public-view{margin-top:-8px}.view-toggle{display:flex;gap:4px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:3px}.view-btn{border:none;background:transparent;color:var(--brand-500);font-family:inherit;font-size:13px;font-weight:var(--fw-bold);padding:6px 12px;border-radius:var(--r-sm);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.view-btn.active{background:var(--primary);color:#fff}.status-toggle{display:flex;gap:4px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:3px}.status-toggle .chip{border:none;background:transparent;color:var(--brand-500);font-family:inherit;font-size:var(--fs-base);font-weight:var(--fw-medium);padding:7px 16px;border-radius:var(--r-sm);cursor:pointer;white-space:nowrap;transition:background var(--t-fast),color var(--t-fast)}.status-toggle .chip.active{background:var(--primary);color:#fff}.past-filter{display:flex;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-4)}.past-year-row,.past-month-row{display:flex;flex-wrap:wrap;gap:6px}.past-year-chip,.past-month-chip{border:1px solid var(--border-strong);background:var(--surface);color:var(--brand-500);font-family:inherit;font-size:13px;font-weight:var(--fw-medium);padding:5px 14px;border-radius:var(--r-pill);cursor:pointer;white-space:nowrap;transition:background var(--t-fast),color var(--t-fast)}.past-year-chip:hover,.past-month-chip:hover{background:var(--bg-subtle)}.past-year-chip.active{background:var(--brand-500);color:#fff;border-color:var(--brand-500)}.past-month-chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}.past-month-row{padding-left:4px}.past-group{margin-bottom:8px}.past-group-header{font-size:1.05rem;font-weight:var(--fw-medium);color:var(--brand-500);margin:18px 0 12px;padding-bottom:6px;border-bottom:1px solid var(--border-strong)}.past-group:first-child .past-group-header{margin-top:4px}.course-list{display:flex;flex-direction:column;gap:8px}.course-list-item{display:grid;grid-template-columns:auto minmax(0,1fr) 180px auto;grid-template-areas:"dot main meta actions";align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 16px;cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast)}.course-list-item:hover{background:var(--bg-muted);border-color:var(--brand-300);box-shadow:var(--sh-1)}.course-list-item:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring)}.cli-mode-dot{grid-area:dot;width:10px;height:10px;border-radius:50%}.cli-main{grid-area:main;min-width:0}.cli-title{font-size:14.5px;font-weight:var(--fw-bold);color:var(--brand-900);line-height:var(--lh-tight)}.cli-org{font-size:12.5px;font-weight:var(--fw-bold);color:var(--brand-500);margin-top:2px}.cli-meta{grid-area:meta;display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}.cli-date{font-size:13.5px;font-weight:var(--fw-bold);color:var(--brand-900)}.cli-fee{font-size:var(--fs-sm);color:var(--text-muted);overflow-wrap:anywhere}.cli-actions{grid-area:actions;display:flex;align-items:center;gap:8px}.cli-register{background:var(--primary);color:#fff;text-decoration:none;font-weight:var(--fw-bold);font-size:var(--fs-sm);padding:7px 16px;border-radius:var(--r-md);white-space:nowrap;transition:background var(--t-fast)}.cli-register:hover{background:var(--primary-hover)}@media(max-width:640px){.course-list-item{grid-template-columns:auto 1fr auto;grid-template-areas:"dot main actions" "meta meta meta";row-gap:8px}}.detail-modal{position:fixed;inset:0;background:#00000080;display:flex;align-items:flex-start;justify-content:center;padding:24px 16px;overflow-y:auto;z-index:1000}.detail-modal-content{position:relative;width:100%;max-width:560px;margin:auto;background:var(--surface);border-radius:var(--r-lg);padding:24px;box-shadow:var(--sh-3)}.detail-modal-close{position:absolute;top:12px;right:12px;width:36px;height:36px;border:none;background:var(--bg-subtle);color:var(--brand-500);border-radius:50%;font-size:16px;cursor:pointer;transition:background var(--t-fast)}.detail-modal-close:hover{background:var(--brand-200)}.dm-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-right:36px}.dm-title{font-size:var(--fs-xl);color:var(--brand-900);margin:0;line-height:var(--lh-tight);font-weight:var(--fw-heavy)}.dm-mode{flex-shrink:0;color:#fff;font-size:12px;font-weight:var(--fw-bold);padding:3px 11px;border-radius:var(--r-pill);white-space:nowrap}.dm-org{color:var(--brand-500);font-weight:var(--fw-bold);font-size:15px;margin-top:8px}.dm-cats{margin-top:10px}.dm-fields{margin-top:16px;display:flex;flex-direction:column;gap:14px}.dm-field{display:flex;flex-direction:column;gap:3px}.dm-label{font-size:12px;font-weight:var(--fw-bold);color:var(--text-faint)}.dm-value{font-size:var(--fs-md);color:var(--text);overflow-wrap:anywhere}.dm-pre{white-space:pre-line}.dm-muted{color:var(--text-faint)}.dm-register{display:block;text-align:center;margin-top:20px;background:var(--primary);color:#fff;text-decoration:none;font-weight:var(--fw-bold);padding:13px;border-radius:var(--r-md);transition:background var(--t-fast)}.dm-register:hover{background:var(--primary-hover)}.dm-share{margin-top:20px;border-top:1px solid var(--bg-subtle);padding-top:16px}.dm-share-label{font-size:12px;font-weight:var(--fw-bold);color:var(--text-faint);margin-bottom:8px}.dm-share-btns{display:flex;flex-wrap:wrap;gap:8px}.share-btn{display:inline-flex;align-items:center;gap:5px;background:var(--surface);border:1px solid var(--border-strong);color:var(--brand-500);font-family:inherit;font-size:13px;font-weight:var(--fw-bold);padding:8px 14px;border-radius:var(--r-md);cursor:pointer;text-decoration:none;transition:background var(--t-fast)}.share-btn:hover{background:var(--bg-subtle)}.share-copy{background:var(--primary);color:#fff;border-color:var(--primary)}.share-copy:hover{background:#46683f}@media(max-width:640px){.detail-modal{padding:0}.detail-modal-content{max-width:none;min-height:100vh;border-radius:0}}.register-btn{display:inline-block;background:var(--primary);color:#fff;text-align:center;padding:8px 18px;border-radius:var(--r-md);text-decoration:none;font-weight:var(--fw-bold);font-size:var(--fs-md);white-space:nowrap;transition:background var(--t-fast),box-shadow var(--t-fast)}.register-btn:hover{background:var(--primary-hover);box-shadow:var(--sh-1)}.admin-form{background:#fff;border:1px solid #a6cf98;border-radius:12px;padding:20px;margin-bottom:20px}.admin-form h2{color:#557c55;margin:0 0 20px}.admin-form-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:24px;align-items:start}.admin-form-fields{min-width:0}.admin-form-rail{position:sticky;top:16px;display:flex;flex-direction:column;gap:12px}.rail-poster-btn{background:#fff;border:1px solid #a6cf98;color:#557c55;padding:11px;border-radius:8px;font-family:inherit;font-size:.92rem;font-weight:700;cursor:pointer}.rail-poster-btn:hover{background:#eef7e6}@media(max-width:900px){.admin-form-grid{grid-template-columns:1fr}.admin-form-rail{position:static}}.admin-form{box-shadow:var(--sh-2)}.admin-form h2{font-size:var(--fs-2xl);font-weight:var(--fw-heavy);color:var(--brand-700)}.admin-step-nav{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-5);padding-bottom:var(--sp-5);border-bottom:1px solid var(--border)}.admin-step-nav .ui-segmented__item{flex:1 1 auto}.admin-step[data-active=false]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);border:0;pointer-events:none}.admin-step[data-active=true]{display:block;animation:adminStepIn var(--t-base)}@keyframes adminStepIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.admin-form-footer{position:sticky;bottom:0;margin-top:var(--sp-6);padding-top:var(--sp-4);background:linear-gradient(to top,var(--surface) 70%,rgba(255,255,255,0));border-top:1px solid var(--border);z-index:1}.admin-form-footer .form-buttons{margin:0}.rail-heading{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--brand-700);letter-spacing:.01em}.rail-section{display:flex;flex-direction:column;gap:var(--sp-2)}.rail-section-label{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-muted)}.rail-preview-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-1);padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-2)}.rail-preview-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3)}.rail-preview-title{margin:0;font-size:var(--fs-lg);font-weight:var(--fw-heavy);color:var(--brand-900);line-height:var(--lh-tight)}.rail-preview-mode{flex-shrink:0;font-size:var(--fs-xs);font-weight:var(--fw-bold);color:#fff;padding:3px 10px;border-radius:var(--r-pill);white-space:nowrap}.rail-preview-org{font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--text)}.rail-preview-line{font-size:var(--fs-md);color:var(--text-muted)}.rail-preview-pre{white-space:pre-wrap}.rail-preview-promo{color:var(--danger);font-weight:var(--fw-bold)}.rail-preview-cpd{align-self:flex-start;margin-top:var(--sp-1);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--brand-700);background:var(--brand-50);padding:4px 12px;border-radius:var(--r-pill)}.form-group{margin-bottom:15px}.form-group label{display:block;color:#333;font-weight:500;margin-bottom:5px;font-size:14px}.form-group input,.form-group select{width:100%;padding:10px 12px;border:1px solid #a6cf98;border-radius:8px;font-size:14px;font-family:inherit;box-sizing:border-box}.form-group input:focus,.form-group select:focus{outline:none;border-color:#557c55;box-shadow:0 0 0 2px #557c5533}.form-row{display:flex;gap:15px}.form-row .form-group{flex:1}.submit-btn{width:100%;background:#557c55;color:#fff;border:none;padding:14px 20px;border-radius:8px;font-size:16px;font-weight:700;font-family:inherit;cursor:pointer;margin-top:10px}.submit-btn:hover{background:#a6cf98;color:#557c55}.speaker-row{display:flex;gap:10px;margin-bottom:10px;align-items:center}.speaker-row input{flex:1;padding:10px 12px;border:1px solid #a6cf98;border-radius:8px;font-size:14px;font-family:inherit}.speaker-row input:focus{outline:none;border-color:#557c55;box-shadow:0 0 0 2px #557c5533}.organisation-row{display:flex;gap:10px;margin-bottom:10px;align-items:center}.organisation-row input{flex:1;padding:10px 12px;border:1px solid #a6cf98;border-radius:8px;font-size:14px;font-family:inherit}.organisation-row input:focus{outline:none;border-color:#557c55;box-shadow:0 0 0 2px #557c5533}.organisations{margin-bottom:8px}.organisations .organisation{margin:2px 0}.remove-btn{background:#ff6b6b;color:#fff;border:none;width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:14px}.remove-btn:hover{background:#ee5a5a}.add-btn{background:#a6cf98;color:#557c55;border:none;padding:8px 16px;border-radius:8px;cursor:pointer;font-weight:600;font-family:inherit;margin-top:5px}.add-btn:hover{background:#557c55;color:#fff}.form-group textarea{width:100%;padding:10px 12px;border:1px solid #a6cf98;border-radius:8px;font-size:14px;font-family:inherit;box-sizing:border-box;resize:vertical}.form-group textarea:focus{outline:none;border-color:#557c55;box-shadow:0 0 0 2px #557c5533}.speakers{margin-bottom:12px}.speaker{margin:4px 0;font-size:14px;color:#333}.speaker-title{color:#555}.detail-item{margin-bottom:10px}.detail-label{font-weight:700;color:#333}.detail-content{margin:4px 0 0;padding-left:20px;font-family:inherit;font-size:14px;font-weight:400;white-space:pre-wrap;color:#333}.card-buttons{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.poster-btn,.caption-btn,.edit-btn,.delete-btn{flex:0 0 auto;width:38px;height:38px;padding:0;border-radius:8px;font-size:16px;font-family:inherit;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.poster-btn{background:#a6cf98;color:#557c55;border:none}.poster-btn:hover{background:#557c55;color:#fff}.caption-btn{background:#fff;color:#557c55;border:1px solid #a6cf98}.caption-btn:hover{background:#eef7e6}.edit-btn{background:#fff;border:1px solid #a6cf98;color:#557c55}.edit-btn:hover{background:#a6cf98}.delete-btn{background:#fff;border:1px solid #fa7070;color:#fa7070}.delete-btn:hover{background:#fa7070;color:#fff}.app-nav{display:flex;justify-content:center;gap:10px;margin-bottom:25px}.nav-link{padding:10px 24px;border-radius:50px;border:2px solid #557c55;color:#557c55;text-decoration:none;font-weight:700;font-size:15px}.nav-link.active{background:#557c55;color:#fff}.nav-link:not(.active):hover{background:#a6cf98}.filter-toolbar{background:#fff;border-radius:12px;padding:14px 16px;margin-bottom:16px;box-shadow:0 1px 4px #557c551a}.filter-search-row{display:flex;align-items:center;gap:10px}.filter-toggle{display:none;align-items:center;gap:6px;background:#fff;border:2px solid #a6cf98;color:#557c55;font-weight:700;font-size:14px;font-family:inherit;padding:9px 14px;border-radius:8px;cursor:pointer;white-space:nowrap}.filter-count{background:#557c55;color:#fff;border-radius:50%;min-width:18px;height:18px;font-size:11px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px}.filter-panel{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px;margin-top:14px}.filter-chip-group{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.filter-group-label{font-weight:700;color:#557c55;font-size:13px}.search-input{flex:1;min-width:0;box-sizing:border-box;padding:11px 16px;border:2px solid #a6cf98;border-radius:8px;font-size:15px;font-family:inherit}.search-input:focus{outline:none;border-color:#557c55}.mode-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.chip{padding:7px 16px;border-radius:50px;border:2px solid #a6cf98;background:#fff;color:#557c55;font-weight:700;font-size:13px;font-family:inherit;cursor:pointer}.chip:hover{background:#f2ffe9}.chip.active{background:#557c55;border-color:#557c55;color:#fff}.filter-row{display:flex;flex-wrap:wrap;gap:20px}.filter-row label{font-weight:700;color:#557c55;font-size:14px}.filter-row select{margin-left:6px;padding:8px 12px;border:2px solid #a6cf98;border-radius:8px;font-family:inherit;font-size:14px;color:#333;background:#fff}.results-count{color:#557c55;font-weight:600;font-size:14px;margin:0 0 15px 4px}.app-footer{margin-top:50px;padding-top:18px;border-top:1px solid #d9ead0;display:flex;justify-content:center}.admin-login-link{display:inline-flex;align-items:center;gap:5px;font-size:.8rem;color:#9aa78c;text-decoration:none}.admin-login-link:hover{color:#557c55}@media(max-width:640px){.filter-toggle{display:inline-flex}.filter-panel{display:none}.filter-panel.open{display:flex;flex-direction:column;align-items:stretch;gap:14px}.filter-toolbar{position:sticky;top:0;z-index:20;box-shadow:0 2px 12px #557c5524}.chip{padding:10px 16px;font-size:14px}.nav-link{padding:12px 22px}.search-input{padding:13px 16px}.filter-toggle{padding:12px 16px}.filter-row select{padding:11px 12px;font-size:15px}.register-btn{padding:11px 22px}.poster-btn,.caption-btn,.edit-btn,.delete-btn{width:44px;height:44px;font-size:18px}}.admin-gate{background:#fff;border-radius:12px;padding:40px;max-width:360px;margin:40px auto;text-align:center;box-shadow:0 2px 8px #557c551a}.admin-gate h2{color:#557c55;margin-top:0}.admin-gate input{width:100%;box-sizing:border-box;padding:12px 16px;border:2px solid #a6cf98;border-radius:8px;font-size:16px;font-family:inherit;margin-bottom:12px;text-align:center}.admin-gate .submit-btn{width:100%}.gate-error{color:#fa7070;font-weight:700;font-size:14px;margin:0 0 12px}.logout-btn{border-color:#aaa;color:#666}.logout-btn:hover:not(:disabled){background:#666!important;border-color:#666!important}.data-toolbar{display:flex;gap:10px;justify-content:center;margin-bottom:20px}.data-btn{background:#fff;border:2px solid #557c55;color:#557c55;padding:10px 20px;border-radius:8px;font-size:14px;font-weight:700;font-family:inherit;cursor:pointer}.data-btn:hover:not(:disabled){background:#557c55;color:#fff}.data-btn:disabled{border-color:#ccc;color:#aaa;cursor:not-allowed}.admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--sp-3);margin-bottom:var(--sp-5)}.admin-stats .ui-stat-card{align-items:center;text-align:center;padding:var(--sp-4)}.admin-stats .ui-stat-card__value{font-size:var(--fs-2xl)}.empty-hint{text-align:center;color:#888;padding:30px 0}.admin-page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3)}.admin-page-title{margin:0;color:var(--brand-900);font-size:var(--fs-2xl)}.data-btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.data-btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover);color:#fff}.admin-quick-search{width:100%;padding:8px 10px;border:1px solid #a6cf98;border-radius:8px;font-family:inherit;font-size:.9rem;box-sizing:border-box}.admin-table-filters{display:flex;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-4)}.admin-quick-filters{display:flex;flex-wrap:wrap;gap:6px}.ui-stat-card--clickable{cursor:pointer;border:none;font:inherit;text-align:center;transition:box-shadow var(--t-fast),border-color var(--t-fast)}.ui-stat-card--clickable:hover{box-shadow:var(--sh-2)}.ui-stat-card--active{border-color:var(--primary);background:var(--brand-100);box-shadow:var(--sh-2),0 0 0 1px var(--primary)}.admin-table-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-4) var(--sp-5);margin-bottom:var(--sp-4)}.admin-row-name-btn{display:block;background:none;border:none;padding:0;font:inherit;font-weight:700;color:var(--brand-700);text-align:left;cursor:pointer}.admin-row-name-btn:hover{text-decoration:underline}.admin-row-date{white-space:nowrap;color:var(--text-muted)}.admin-row-actions{white-space:nowrap}.admin-row-actions .poster-btn,.admin-row-actions .caption-btn,.admin-row-actions .edit-btn,.admin-row-actions .delete-btn{width:32px;height:32px;font-size:14px;margin-left:6px}.admin-editor-view{display:flex;flex-direction:column;gap:var(--sp-3)}.admin-back-link{align-self:flex-start;background:none;border:none;padding:0;font:inherit;font-weight:var(--fw-bold);color:var(--brand-500);cursor:pointer}.admin-back-link:hover{color:var(--brand-700);text-decoration:underline}.form-buttons{display:flex;gap:10px}.form-buttons .submit-btn{flex:1}.cancel-edit-btn{background:#fff;border:2px solid #aaa;color:#666;padding:12px 20px;border-radius:8px;font-size:14px;font-weight:700;font-family:inherit;cursor:pointer}.cancel-edit-btn:hover{background:#eee}.poster-modal{position:fixed;inset:0;background:#000c;display:flex;justify-content:center;align-items:flex-start;padding:20px;overflow-y:auto;z-index:1000}.poster-modal-content{background:#fff;border-radius:12px;padding:20px;max-width:600px;width:100%}.poster-actions{display:flex;gap:10px;margin-bottom:20px}.download-btn{flex:1;background:#557c55;color:#fff;border:none;padding:12px 20px;border-radius:8px;font-size:14px;font-weight:700;font-family:inherit;cursor:pointer}.download-btn:hover{background:#3d5a3d}.close-btn{background:#ccc;color:#333;border:none;padding:12px 20px;border-radius:8px;font-size:14px;font-weight:700;font-family:inherit;cursor:pointer}.close-btn:hover{background:#999}.poster-scaler{width:calc(var(--preview-scale, .5) * 1080px);height:calc(var(--preview-scale, .5) * 1350px);overflow:hidden;flex-shrink:0}.poster-scaler .poster{transform:scale(var(--preview-scale, .5));transform-origin:top left}.poster-scaler.exporting{position:fixed;left:-10000px;top:0;width:1080px;height:1350px;overflow:visible;z-index:-1}.poster-scaler.exporting .poster{transform:none}@media(max-width:640px){.poster-modal{padding:12px}.poster-modal-content{padding:12px;border-radius:8px;max-width:none}.poster-actions{flex-wrap:wrap;gap:6px}}.poster{width:1080px;height:1350px;background-color:#f2ffe9;font-family:GenSenRounded2TC,sans-serif;position:relative;display:flex;flex-direction:column;overflow:hidden}.poster,.poster *{box-sizing:border-box}.poster-header{background-color:#557c55;padding:50px;height:280px;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;overflow:hidden}.poster-logo{position:absolute;left:-50px;top:55%;transform:translateY(-50%);width:600px;height:auto;opacity:.3;z-index:1}.poster-title{color:#fff;font-size:52px;font-weight:900;text-align:center;line-height:1.3;margin:0;position:relative;z-index:2}.poster-header--badge{padding-top:104px;padding-bottom:24px}.poster-discount-badge{position:absolute;top:16px;right:-34px;z-index:1;background:#fa7070;color:#fff;transform:skew(-12deg);padding:9px 56px 11px 40px;display:flex;flex-direction:column;align-items:center;line-height:1.05;box-shadow:0 6px 14px #0000002e}.poster-discount-badge>*{transform:skew(12deg)}.poster-discount-badge .pdb-small{font-size:18px;font-weight:700;letter-spacing:6px;padding-left:6px}.poster-discount-badge .pdb-big{font-size:34px;font-weight:800;letter-spacing:1px}.poster-mode-container{display:flex;justify-content:flex-end;padding-right:50px;margin-top:-30px;margin-bottom:-16px;position:relative;z-index:10;flex-shrink:0}.poster-mode-tag{display:inline-block;color:#fff;font-size:28px;font-weight:700;padding:14px 40px;border-radius:50px}.poster-body{flex:1;display:flex;flex-direction:column;overflow:hidden;padding:0 44px}.poster-org-section{flex-shrink:0;display:flex;align-items:center}.poster-logo-col{flex-shrink:0;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:12px;margin-right:20px}.poster-logo-cell{display:flex;align-items:center;justify-content:center;min-width:0}.poster-logo-img{width:auto;height:auto;display:block}.poster-org-text{flex:1;min-width:0}.poster-org{font-weight:800;color:#557c55;line-height:1.3}.poster-speaker{color:#6e8e6e;line-height:1.3}.poster-speaker .speaker-name{font-weight:600}.poster-speaker .speaker-title{font-weight:400}.poster-content-with-qr{flex:1;min-height:0;display:flex;flex-direction:column}.poster-bottom-spacer{flex-shrink:0;height:28px;background-color:#f2ffe9;position:relative}.poster-info-table{display:flex;flex-direction:column;justify-content:flex-start;flex:1;min-height:0}.poster-info-row{display:flex;align-items:stretch;flex:1 0 auto}.poster-info-label{width:200px;background-color:#a6cf98;color:#fff;font-weight:800;display:flex;align-items:center;flex-shrink:0}.poster-info-content{flex:1;background-color:#fff;color:#557c55;font-weight:700;white-space:pre-wrap;line-height:1.35;display:flex;align-items:center;overflow:hidden;word-break:break-word}.poster-info-content>div{width:100%}.poster-promo{background-color:#fa7070;color:#fff;overflow-wrap:anywhere}.poster-footer{background-color:#557c55;padding:18px 44px;display:flex;justify-content:space-between;align-items:center;color:#fff;flex-shrink:0}.poster-footer-brand{display:flex;flex-direction:column;gap:8px;font-size:34px;font-weight:700}.poster-footer .footer-course{color:#a6cf98}.poster-footer .footer-website{font-weight:700;color:#fffc;letter-spacing:.01em}.poster-footer .poster-qr-box{background-color:#fff;border:5px solid #c59d6c;border-radius:10px;padding:9px;display:flex;align-items:center;justify-content:center}.promo-section{background:#fff5f5;border:2px dashed #fa7070;border-radius:8px;padding:15px;margin-bottom:15px}.promo-label{display:block;color:#fa7070;font-weight:700;margin-bottom:10px;font-size:14px}.promo-badge{background:#fa7070;color:#fff;padding:8px 12px;border-radius:6px;margin-top:8px;margin-left:20px;font-family:VT323,monospace;font-size:16px;display:inline-flex;align-items:center;flex-wrap:nowrap}.promo-price{font-weight:700;font-size:18px}.promo-code{font-size:16px;white-space:nowrap}.file-dropzone{border:2px dashed #a6cf98;border-radius:8px;padding:15px;text-align:center;transition:border-color .15s,background .15s}.file-dropzone.dragover{border-style:solid;border-color:#557c55;background:#eef6e8}.upload-hint--drop{color:#557c55;font-weight:600;margin-top:8px;margin-bottom:0}.pdf-converting{color:#fa7070;font-weight:700}.discount-toggle{display:flex;align-items:center;gap:8px;margin-top:12px;font-weight:600;color:#557c55;cursor:pointer}.discount-toggle input{width:18px;height:18px;cursor:pointer;accent-color:#557c55}.poster-upload-section{border:2px dashed #a6cf98;border-radius:8px;padding:15px;text-align:center}.uploaded-posters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:15px;justify-content:center}.uploaded-poster-item{position:relative;width:80px}.uploaded-poster-item img{width:80px;height:100px;object-fit:cover;border-radius:4px;border:1px solid #a6cf98}.uploaded-poster-item .remove-btn{position:absolute;top:-8px;right:-8px;width:24px;height:24px;font-size:12px}.poster-number{display:block;font-size:11px;color:#557c55;margin-top:4px;text-align:center}.logo-upload-section{border:2px dashed #a6cf98;border-radius:8px;padding:15px;text-align:center}.uploaded-logos{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:15px;justify-content:center}.uploaded-logo-item{position:relative;width:88px;height:88px}.uploaded-logo-item img{width:88px;height:88px;object-fit:contain;background:#f6f9f2;border-radius:6px;border:1px solid #a6cf98;padding:6px}.uploaded-logo-item .remove-btn{position:absolute;top:-8px;right:-8px;width:24px;height:24px;font-size:12px}.upload-btn{display:inline-block;background:#a6cf98;color:#557c55;padding:10px 20px;border-radius:8px;cursor:pointer;font-weight:600;font-family:inherit}.upload-btn:hover{background:#557c55;color:#fff}.upload-hint{font-size:12px;color:#888;margin-top:8px;margin-bottom:0}.page-navigation{display:flex;justify-content:center;align-items:center;gap:15px;margin-bottom:15px}.nav-btn{background:#a6cf98;color:#557c55;border:none;padding:8px 16px;border-radius:8px;cursor:pointer;font-weight:600;font-family:inherit}.nav-btn:hover:not(:disabled){background:#557c55;color:#fff}.nav-btn:disabled{background:#ddd;color:#999;cursor:not-allowed}.page-indicator{font-weight:600;color:#557c55}.poster-image-page{flex:1;background:#f2ffe9;display:flex;align-items:center;justify-content:center;padding:0;overflow:hidden}.poster-official-image{max-width:100%;max-height:100%;width:auto;height:auto;display:block}.header-account{margin-left:auto;flex-shrink:0}.account-greet{color:#557c55;font-weight:700;text-decoration:none;font-size:.95rem;white-space:nowrap}.account-greet:hover{text-decoration:underline}.login-cta{background:#557c55;color:#fff;border:none;border-radius:999px;padding:8px 18px;font-size:.9rem;font-weight:700;font-family:inherit;cursor:pointer;white-space:nowrap}.login-cta:hover{background:#466646}.auth-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto;z-index:1000}.auth-modal{background:#fff;border-radius:14px;padding:28px 28px 32px;max-width:420px;width:100%;position:relative;box-shadow:0 10px 40px #0003}.auth-close{position:absolute;top:12px;right:14px;background:none;border:none;font-size:20px;color:#999;cursor:pointer;line-height:1}.auth-close:hover{color:#555}.auth-tabs{display:flex;gap:8px;margin:4px 0 14px}.auth-tab{flex:1;padding:10px;border:2px solid #a6cf98;background:#fff;color:#557c55;border-radius:8px;font-weight:700;font-family:inherit;font-size:15px;cursor:pointer}.auth-tab.active{background:#557c55;border-color:#557c55;color:#fff}.auth-subtitle{color:#666;font-size:.9rem;margin:0 0 16px;text-align:center}.auth-sent{color:#444;line-height:1.6;margin:12px 0 20px}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-form label{display:flex;flex-direction:column;gap:5px;font-size:.85rem;font-weight:700;color:#557c55;text-align:left}.auth-form input,.auth-form select{padding:11px 14px;border:2px solid #a6cf98;border-radius:8px;font-size:16px;font-family:inherit;background:#fff}.auth-form input:disabled{background:#f2f2f2;color:#888}.auth-form .submit-btn{margin-top:4px}.auth-checkbox{flex-direction:row!important;align-items:flex-start;gap:8px;font-size:.82rem;color:#444;line-height:1.4;cursor:pointer}.auth-checkbox input[type=checkbox]{width:auto;margin-top:2px;accent-color:#557c55;flex-shrink:0}.link-inline{background:none;border:none;padding:0;font:inherit;color:#557c55;font-weight:700;text-decoration:underline;cursor:pointer}.link-inline:hover{color:#3d5a3d}.legal-modal{max-width:560px;max-height:85vh;display:flex;flex-direction:column}.legal-title{color:#557c55;margin:0 0 4px;font-size:1.3rem}.legal-updated{color:#999;font-size:.8rem;margin:0 0 12px}.legal-body{overflow-y:auto;-webkit-overflow-scrolling:touch;margin-bottom:14px}.legal-section{margin-bottom:14px}.legal-heading{color:#3d5a3d;font-size:.95rem;margin:0 0 4px}.legal-para{color:#444;font-size:.88rem;line-height:1.6;margin:0;white-space:pre-line}.account-page{width:100%;overflow-x:hidden}.account-hello{color:var(--brand-700);font-size:var(--fs-3xl);font-weight:var(--fw-heavy);margin:0 0 var(--sp-5)}.account-tabs{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-6);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}.account-tabs::-webkit-scrollbar{display:none}.account-tab{padding:9px 18px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-pill);cursor:pointer;font-family:inherit;font-size:var(--fs-md);color:var(--brand-700);font-weight:var(--fw-bold);transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast);white-space:nowrap;flex-shrink:0}.account-tab:hover:not(.active){background:var(--bg-muted)}.account-tab.active{color:var(--text-on-brand);background:var(--primary);border-color:var(--primary);box-shadow:var(--sh-1)}.account-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-6);margin-bottom:var(--sp-5);box-shadow:var(--sh-2)}.account-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3);margin-bottom:var(--sp-5)}.account-stats .ui-stat-card{align-items:center;text-align:center;padding:var(--sp-4)}.account-stats .ui-stat-card__value{font-size:var(--fs-2xl)}.account-card h3{color:#557c55;margin:0 0 16px}.muted-hint{color:#888;font-size:.88rem;margin:0}.save-ok{color:#557c55;font-weight:700;font-size:14px;margin:0}.account-logout{margin-top:4px}@media(max-width:640px){.header-account{width:100%;margin-left:0;margin-top:8px}.app-header{flex-wrap:wrap}}.wishlist-btn,.attended-btn{background:none;border:1px solid #c8d9c4;border-radius:8px;cursor:pointer;font-family:inherit;font-size:16px;line-height:1;padding:6px 9px;color:#9aa78c;transition:background .12s,color .12s,border-color .12s}.wishlist-btn:hover{background:#fce8e8;border-color:#e88;color:#c44}.wishlist-btn.wishlisted{color:#c44;border-color:#e88;background:#fce8e8}.attended-btn:hover{background:#e8f4e8;border-color:#8b8;color:#3a7a3a}.attended-btn.attended{color:#3a7a3a;border-color:#8b8;background:#e8f4e8}.wishlist-btn--sm{padding:4px 8px;font-size:14px}.dm-actions{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}.wishlist-btn--lg,.attended-btn--lg{flex:1;padding:10px 14px;font-size:14px;font-weight:700;border-radius:10px;text-align:center}@media(max-width:640px){.wishlist-btn--sm{padding:7px 10px;font-size:15px}}.cpd-cycle-card{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5);margin-bottom:var(--sp-4)}.cpd-cycle-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.cpd-cycle-label{font-weight:700;color:#557c55;font-size:1rem}.cpd-cycle-range{color:#888;font-size:.82rem;margin-left:6px}.cpd-cycle-pts{text-align:right;white-space:nowrap}.cpd-pts-num{font-size:1.6rem;font-weight:700;color:#557c55}.cpd-pts-denom{font-size:.9rem;color:#888}.cpd-progress-bar{height:8px;background:#dce9d8;border-radius:4px;margin-bottom:14px;overflow:hidden}.cpd-progress-fill{height:100%;background:#6aa66a;border-radius:4px;transition:width .4s ease}.cpd-table{width:100%;border-collapse:collapse;font-size:.85rem;margin-bottom:14px}.analytics-table{table-layout:fixed;min-width:520px}.analytics-table .analytics-name-col{width:55%}.analytics-table th{-webkit-user-select:none;user-select:none;white-space:nowrap}.analytics-course-name{color:#333;font-weight:600;word-break:break-word}.analytics-course-org{color:#888;font-size:.78rem;word-break:break-word}.analytics-total-row td{border-top:2px solid #dce9d8;color:#557c55}.admin-course-table{min-width:680px}.admin-course-table .analytics-name-col{width:30%}.admin-course-table th.admin-row-date{width:100px}.admin-course-table .admin-row-num{width:70px;text-align:center}.admin-course-table th.admin-row-actions{width:170px}.list-pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}.list-page-size{display:flex;align-items:center;gap:6px;font-size:.85rem;color:#557c55;font-weight:600}.list-page-size select{padding:5px 8px;border:1px solid #a6cf98;border-radius:6px;font-family:inherit;font-size:.85rem;color:#333}.list-page-nav{display:flex;align-items:center;gap:12px}.ledger-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.cpd-table--ledger{table-layout:fixed;min-width:720px}.cpd-table--ledger th:nth-child(1){width:26%}.cpd-table--ledger th:nth-child(2){width:128px}.cpd-table--ledger th:nth-child(3){width:20%}.cpd-table--ledger th:nth-child(4){width:46px;text-align:right}.cpd-table--ledger th:nth-child(5){width:90px}.cpd-table--ledger th:nth-child(6){width:42px}.cpd-table--ledger th:nth-child(7){width:46px;text-align:center}.cpd-table--ledger th:nth-child(8){width:94px}.cpd-table--ledger .cpd-course-name{word-break:break-word;max-width:none}.cpd-table--ledger .cpd-date{white-space:normal;word-break:break-word}.cpd-table--ledger .cpd-org{word-break:break-word}.cpd-table--ledger .cpd-code{overflow-wrap:break-word}.cpd-table--ledger .cpd-row-actions{text-align:right}.cpd-table th{text-align:left;color:var(--text-muted);font-weight:var(--fw-bold);padding:6px 8px 8px 0;border-bottom:1px solid var(--border-strong)}.cpd-table td{padding:6px 8px 6px 0;border-bottom:1px solid #eef3ec;vertical-align:top}.cpd-table tr:last-child td{border-bottom:none}.cpd-course-name{color:#333;max-width:320px}.cpd-date{color:#888;white-space:nowrap}.cpd-pts{text-align:right;font-weight:700;color:#557c55;white-space:nowrap}.cpd-pending-badge{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:var(--r-pill);font-size:.75rem;background:#fbead9;color:var(--accent-orange);font-weight:var(--fw-bold)}.cpd-export-row{display:flex;justify-content:flex-end}.export-cpd-btn{background:#557c55;color:#fff;border:none;border-radius:8px;padding:9px 16px;font-size:.85rem;font-family:inherit;font-weight:700;cursor:pointer}.export-cpd-btn:disabled{opacity:.6;cursor:not-allowed}.export-cpd-btn:hover:not(:disabled){background:#464}.cpd-section-title{font-size:1rem;font-weight:700;color:#557c55;margin:20px 0 10px}.account-card>.cpd-section-title:first-child{margin-top:0}.account-course-list{list-style:none;padding:0;margin:0}.account-course-item{display:flex;align-items:baseline;gap:10px;padding:8px 0;border-bottom:1px solid #eef3ec;font-size:.88rem}.account-course-item:last-child{border-bottom:none}.acc-course-name{flex:1;color:#333}.acc-course-date{color:#888;white-space:nowrap;font-size:.82rem}.cpd-code{color:#777;white-space:nowrap;font-size:.82rem}.cpd-rel{color:#777;white-space:nowrap}.cpd-org{color:#777;font-size:.82rem;word-break:break-word;max-width:180px}.cpd-cert{text-align:center;white-space:nowrap}.cpd-cert-yes{color:#557c55;font-weight:700}.cpd-cert-no{color:#c0392b}.cpd-src-badge{display:block;margin-left:0;margin-top:4px;padding:1px 6px;border-radius:4px;font-size:.7rem;background:#eef3ec;color:#6a8a6a;font-weight:600;width:fit-content}.cpd-row-actions{text-align:right;white-space:nowrap}.cpd-edit-btn,.cpd-del-btn{border:1px solid #cfe0c8;background:#fff;border-radius:6px;padding:3px 9px;font-size:.78rem;font-family:inherit;cursor:pointer;color:#557c55;margin-left:6px}.cpd-edit-btn:hover:not(:disabled){background:#f1f7ee}.cpd-del-btn{color:#b5524a;border-color:#e6c4c0}.cpd-del-btn:hover:not(:disabled){background:#fdf2f1}.cpd-edit-btn:disabled,.cpd-del-btn:disabled{opacity:.5;cursor:not-allowed}.rec-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}.rec-field{display:flex;flex-direction:column;gap:4px;font-size:.78rem;color:#667;font-weight:600}.rec-field--wide{grid-column:1 / -1}.rec-field--checkbox{grid-column:1 / -1;flex-direction:row;align-items:center;gap:8px}.rec-field--checkbox input[type=checkbox]{width:16px;height:16px;accent-color:#557c55}.rec-field input,.rec-field select{font-family:inherit;font-size:.9rem;padding:7px 9px;border:1px solid #cfe0c8;border-radius:8px;background:#fff;color:#333}.rec-field input:focus,.rec-field select:focus{outline:none;border-color:#557c55}.rec-actions{display:flex;gap:8px;margin-top:12px}.rec-save-btn{background:#557c55;color:#fff;border:none;border-radius:8px;padding:8px 16px;font-size:.85rem;font-family:inherit;font-weight:700;cursor:pointer}.rec-save-btn:hover:not(:disabled){background:#464}.rec-save-btn:disabled{opacity:.55;cursor:not-allowed}.rec-cancel-btn{background:#fff;color:#777;border:1px solid #d6d6d6;border-radius:8px;padding:8px 16px;font-size:.85rem;font-family:inherit;font-weight:600;cursor:pointer}.rec-cancel-btn:hover:not(:disabled){background:#f5f5f5}.manual-add-section{border:1px solid #e3eede;background:#fafdf8;border-radius:12px;padding:14px 16px;margin-bottom:18px}.manual-add-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.manual-add-title{margin:0}.manual-add-toggle{border:1px solid #cfe0c8;background:#fff;color:#557c55;border-radius:8px;padding:6px 12px;font-size:.82rem;font-family:inherit;font-weight:700;cursor:pointer;white-space:nowrap}.manual-add-toggle:hover{background:#f1f7ee}.manual-add-hint{margin:6px 0 0}.manual-add-form{margin-top:12px}.board-confirm-overlay{position:fixed;inset:0;background:#00000061;z-index:300;display:flex;align-items:center;justify-content:center;padding:20px}.board-confirm-dialog{background:#fff;border-radius:14px;padding:28px 28px 20px;max-width:620px;width:100%;box-shadow:0 10px 40px #0000002e;max-height:90vh;overflow-y:auto}.board-confirm-title{font-size:1.08rem;font-weight:700;color:#3a6b3a;margin:0 0 6px}.board-confirm-hint{margin:0 0 16px}.new-courses-dialog{max-width:480px;position:relative}.new-courses-close{position:absolute;top:12px;right:14px;background:none;border:none;font-size:20px;color:#999;cursor:pointer;line-height:1}.new-courses-close:hover{color:#555}.new-courses-list{list-style:none;margin:0 0 var(--sp-4);padding:0;display:flex;flex-direction:column;gap:var(--sp-2);max-height:320px;overflow-y:auto}.new-courses-list li{padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-subtle)}.new-course-link{display:block;background:none;border:none;padding:0;font:inherit;font-weight:700;color:var(--brand-700);text-align:left;cursor:pointer}.new-course-link:hover{text-decoration:underline}.new-course-org,.new-course-date{display:block;margin-top:2px;font-size:var(--fs-sm);color:var(--text-muted)}.account-course-item{flex-wrap:wrap}.acc-course-main{display:flex;align-items:baseline;gap:10px;flex:1;min-width:0}.acc-course-name--link{background:none;border:none;padding:0;font:inherit;text-align:left;color:#41693f;cursor:pointer;text-decoration:underline;text-decoration-color:#bcd6b3;text-underline-offset:2px}.acc-course-name--link:hover{color:#2f5a2d}.acc-course-actions{display:flex;gap:6px;flex-shrink:0}.acc-mini-btn{border:1px solid #cfe0c8;background:#fff;border-radius:7px;padding:4px 10px;font-size:.78rem;font-family:inherit;font-weight:600;cursor:pointer}.acc-mini-btn:disabled{opacity:.5;cursor:not-allowed}.acc-mini-attend{color:#557c55}.acc-mini-attend:hover:not(:disabled){background:#f1f7ee}.acc-mini-remove{color:#b5524a;border-color:#e6c4c0}.acc-mini-remove:hover:not(:disabled){background:#fdf2f1}.search-tab-note{margin:0 0 14px}.search-rel-toggle{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.search-rel-btn{padding:7px 18px;border:1.5px solid #c8d8c0;border-radius:20px;background:#fff;color:#557c55;cursor:pointer;font:inherit;font-size:.88rem;transition:background .15s,border-color .15s}.search-rel-btn.active{background:#557c55;color:#fff;border-color:#557c55}.search-rel-btn:hover:not(.active){background:#f1f7ee}.search-year-tabs{display:flex;gap:6px;margin-bottom:14px;border-bottom:2px solid #e0ecd4}.search-year-btn{padding:5px 14px;border:none;border-radius:8px 8px 0 0;background:transparent;color:#6b8f6b;cursor:pointer;font:inherit;font-size:.88rem;border-bottom:3px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s}.search-year-btn.active{color:#3a6b3a;border-bottom-color:#3a6b3a;font-weight:600}.search-year-btn:hover:not(.active){color:#3a6b3a;background:#f5faf0}.search-box-row{display:flex;gap:8px;margin-bottom:14px}.search-box-input{flex:1;padding:8px 12px;border:1.5px solid #c8d8c0;border-radius:8px;font:inherit;font-size:.9rem;background:#fff}.search-box-input:focus{outline:none;border-color:#557c55;box-shadow:0 0 0 3px #557c551f}.search-box-btn{padding:8px 16px;background:#557c55;color:#fff;border:none;border-radius:8px;cursor:pointer;font:inherit;font-size:.9rem;white-space:nowrap;transition:background .15s}.search-box-btn:hover:not(:disabled){background:#3a6b3a}.search-box-btn:disabled{opacity:.5;cursor:not-allowed}.search-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.cpd-search-table{font-size:.79rem;table-layout:fixed;min-width:740px;width:100%}.cpd-search-table thead th{font-size:.74rem;white-space:nowrap}.cpd-search-table .col-code{width:96px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cpd-search-table .col-name{width:28%;overflow:hidden;word-break:break-word}.cpd-search-table .col-date{width:20%;white-space:normal;word-break:break-word}.cpd-search-table .col-org{width:22%;white-space:normal;word-break:break-word}.cpd-search-table .col-pts{width:46px;text-align:center;white-space:nowrap}.cpd-search-table .col-action{width:100px;text-align:center;white-space:nowrap}.search-add-btn{padding:4px 10px;background:#557c55;color:#fff;border:none;border-radius:6px;cursor:pointer;font:inherit;font-size:.78rem;white-space:nowrap;transition:background .15s}.search-add-btn:hover:not(:disabled){background:#3a6b3a}.search-add-btn:disabled{opacity:.55;cursor:not-allowed}.search-add-btn--done{background:#8aaa8a!important}@media(max-width:480px){.cpd-cycle-header{flex-direction:column;align-items:flex-start}.cpd-table{font-size:.8rem}.cpd-table--ledger{font-size:.74rem}.cpd-table--ledger th,.cpd-table--ledger td{padding-right:5px}.export-cpd-btn{width:100%;text-align:center}.rec-grid{grid-template-columns:1fr}.acc-course-actions{width:100%;margin-top:6px}.cpd-search-table{font-size:.72rem}.search-box-btn{padding:8px 10px}}.cc-new-badge{display:inline-block;background:#d63a3a;color:#fff;font-size:.62rem;font-weight:700;padding:2px 5px;border-radius:3px;letter-spacing:.05em;margin-right:6px;vertical-align:middle;line-height:1.5}.cal-my-courses-chip{margin-left:auto}.cc-row.cc-row-deadline,.cc-row.cc-row-deadline .cc-row-icon{color:#c0392b;font-size:12.5px}.cpd-filter-group{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.cpd-slider-row{display:flex;align-items:center;gap:8px}.cpd-slider{width:130px;accent-color:#557c55;cursor:pointer}.cpd-slider:disabled{opacity:.3;cursor:default}.cpd-slider-val{font-size:13px;color:#557c55;font-weight:700;min-width:44px}.coming-soon{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;color:#7a8a6b;text-align:center;gap:8px}.coming-soon .cs-icon{font-size:3rem}.coming-soon h2{font-size:1.4rem;color:#2c5c2c;margin:0}.coming-soon p{margin:0;font-size:1rem}@media(max-width:768px){.top-bar{padding:0 10px;gap:8px}.topbar-brand,.topbar-social,.topbar-auth,.topbar-spacer{display:none}.topbar-themes{flex:1;gap:0;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.topbar-themes::-webkit-scrollbar{display:none}.theme-tab{font-size:12.5px;padding:6px 9px;white-space:nowrap;flex-shrink:0}.sidebar{position:fixed;left:-260px;top:58px;height:calc(100vh - 58px);width:256px!important;min-width:256px!important;border-right:1px solid #d9ead0!important;transition:left .28s ease!important;z-index:200}.sidebar.open{left:0;box-shadow:4px 0 24px #0000002e}.sidebar-overlay{display:block;position:fixed;inset:58px 0 0;background:#00000047;z-index:199}.page-content{padding:14px 14px calc(124px + env(safe-area-inset-bottom,0px))}}.bottom-nav{display:none}@media(max-width:768px){.bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:210;background:var(--surface);border-top:1px solid var(--border);box-shadow:0 -2px 12px #2e4a221a;padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px))}.bn-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 2px;color:var(--text-faint);font-size:11px;font-weight:var(--fw-bold);font-family:inherit;text-decoration:none;background:none;border:none;border-radius:var(--r-sm);cursor:pointer;transition:color var(--t-fast),background var(--t-fast)}.bn-item:active{background:var(--bg-muted)}.bn-item.active{color:var(--primary)}}.tools-content{max-width:900px}.tools-back-btn{background:none;border:1.5px solid #c8e0ba;color:#3a6b3a;font-family:inherit;font-size:13px;font-weight:600;padding:7px 14px;border-radius:8px;cursor:pointer;margin-bottom:20px;transition:background .12s,border-color .12s}.tools-back-btn:hover{background:#eef7e6;border-color:#3a6b3a}.tools-hub-header{margin-bottom:28px}.tools-hub-title{font-size:1.6rem;font-weight:800;color:#1e4a1e;margin:0 0 4px}.tools-hub-sub{font-size:.88rem;color:#7a9a6a;margin:0}.tools-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.tool-card{display:flex;flex-direction:column;text-align:left;background:#fff;border:1.5px solid #d4eac8;border-radius:14px;padding:20px;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .12s;font-family:inherit}.tool-card:hover{border-color:#3a6b3a;box-shadow:0 4px 18px #3a6b3a1f;transform:translateY(-2px)}.tool-card--coming{background:#fafdfb;border-style:dashed;cursor:default;opacity:.7}.tool-card--coming:hover{transform:none;box-shadow:none;border-color:#d4eac8}.tool-card-icon{font-size:2rem;margin-bottom:12px}.tool-card-body{flex:1}.tool-card-name{font-size:1rem;font-weight:800;color:#1e4a1e;margin:0 0 2px}.tool-card-zh{font-size:.82rem;color:#557c55;margin:0 0 4px;font-weight:600}.tool-card-version{font-size:.75rem;color:#8aaa7a;margin:0 0 8px;text-transform:uppercase;letter-spacing:.06em;font-weight:700}.tool-card-desc{font-size:.83rem;color:#5a6a50;line-height:1.55;margin:0 0 10px}.tool-card-meta{display:flex;gap:6px;font-size:.75rem;color:#8aaa7a;font-weight:600}.tool-card-cta{margin-top:14px;font-size:.83rem;font-weight:700;color:#3a6b3a}.mbi-tool{max-width:820px;display:flex;flex-direction:column;gap:14px}.mbi-sticky-header{position:sticky;top:58px;z-index:50;background:#fff;border:1.5px solid #d4eac8;border-radius:12px;padding:14px 18px 12px;box-shadow:0 2px 12px #00000012}.mbi-header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.mbi-header-title{font-size:1.05rem;font-weight:800;color:#1e4a1e;margin:0 0 2px}.mbi-header-version{font-size:.75rem;color:#8aaa7a;font-weight:600;letter-spacing:.04em}.mbi-header-title-block{flex:1;min-width:0}.mbi-reset-btn{background:#fff;border:1.5px solid #c8e0ba;color:#3a6b3a;font-family:inherit;font-size:12.5px;font-weight:700;padding:6px 14px;border-radius:20px;cursor:pointer;flex-shrink:0;transition:background .12s,border-color .12s}.mbi-reset-btn:hover{background:#f0f9ea;border-color:#3a6b3a}.mbi-header-score-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.mbi-total-num{font-size:2rem;font-weight:800;line-height:1;min-width:2.2ch;transition:color .25s}.mbi-total-denom{font-size:.95rem;color:#9aaa8a;font-weight:600;margin-right:4px}.mbi-progress-track{flex:1;min-width:120px;height:10px;border-radius:5px;display:flex;overflow:hidden;position:relative;background:#eee}.mbi-zone{height:100%}.mbi-zone-red{background:#e8a89e}.mbi-zone-orange{background:#f0c49e}.mbi-zone-yellow{background:#e8d88a}.mbi-zone-green{background:#8ed8a6}.mbi-zone-dgreen{background:#5dbb80}.mbi-progress-pointer{position:absolute;top:-2px;width:3px;height:14px;background:#1e4a1e;border-radius:2px;transform:translate(-50%);transition:left .3s ease;box-shadow:0 0 0 2px #fff}.mbi-interp-pill{font-size:.78rem;font-weight:700;padding:4px 10px;border-radius:12px;white-space:nowrap;flex-shrink:0}.mbi-domains{display:flex;flex-direction:column;gap:10px}.mbi-domain{background:#fff;border:1.5px solid #e0ecd8;border-radius:12px;overflow:hidden;transition:border-color .15s}.mbi-domain--scored{border-color:#b8d8a8}.mbi-domain--disabled{opacity:.5;pointer-events:none}.mbi-domain-hd{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 10px;gap:10px;width:100%;cursor:pointer;background:none;border:none;font-family:inherit;text-align:left;border-radius:12px}.mbi-domain-hd:hover{background:#f5faf0}.mbi-domain-hd--open{border-bottom:1px solid #eef3e6;border-radius:12px 12px 0 0}.mbi-domain-hd-left{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.mbi-domain-idx{width:24px;height:24px;background:#3a6b3a;color:#fff;font-size:11px;font-weight:800;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.mbi-domain-name{font-size:.95rem;font-weight:700;color:#1e4a1e;margin:0}.mbi-cond-tag{font-size:.68rem;font-weight:700;color:#8a6900;background:#fefbe8;border:1px solid #e8d88a;border-radius:8px;padding:2px 7px;white-space:nowrap;flex-shrink:0}.mbi-domain-hd-right{flex-shrink:0;display:flex;align-items:center;gap:8px}.moca-chevron{font-size:.65rem;color:#9aaa8a;line-height:1}.mbi-cur-score{font-size:1.1rem;font-weight:800;transition:color .25s;white-space:nowrap}.mbi-cur-score--empty{color:#bbb}.mbi-max-score{font-size:.75rem;font-weight:600;color:#9aaa8a}.mbi-wc-checkbox{display:flex;align-items:center;gap:8px;padding:8px 16px;font-size:.82rem;color:#999;cursor:not-allowed;border-bottom:1px solid #eef3e6;background:#fafdf8}.mbi-wc-checkbox--active{color:#2e5f2e;cursor:pointer;background:#f0f9ea}.mbi-wc-checkbox input{cursor:inherit}.mbi-wc-note{font-size:.75rem;color:#bbb;font-style:italic}.mbi-disabled-msg{padding:10px 16px;font-size:.82rem;color:#aaa;font-style:italic;margin:0}.mbi-options{padding:4px 0 6px}.mbi-option{display:flex;align-items:flex-start;gap:0;padding:7px 16px;cursor:pointer;transition:background .1s;border-bottom:1px solid #f5f8f2}.mbi-option:last-child{border-bottom:none}.mbi-option:hover{background:#f5fbf0}.mbi-option--selected{background:#eaf5e1}.mbi-option--selected:hover{background:#e0f0d4}.mbi-radio-input{margin:3px 10px 0 0;accent-color:#3a6b3a;flex-shrink:0;width:16px;height:16px;cursor:pointer}.mbi-opt-val{font-size:.92rem;font-weight:800;color:#3a6b3a;min-width:28px;flex-shrink:0;margin-top:1px}.mbi-opt-text{font-size:.83rem;color:#3a4a30;line-height:1.55}.mbi-option--selected .mbi-opt-text{color:#1e3a1e}.mbi-interp-panel{background:#f8fdf6;border:1.5px solid #d4eac8;border-radius:12px;padding:18px 20px;min-height:80px;transition:border-color .3s,background .3s}.mbi-interp-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}.mbi-interp-level{font-size:1.2rem;font-weight:800;margin-bottom:2px}.mbi-interp-score-line{font-size:.85rem;color:#5a6a50}.mbi-scale-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin-bottom:14px}.mbi-scale-row{display:flex;align-items:center;gap:6px;font-size:.78rem;color:#5a6a50}.mbi-scale-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.mbi-predictions{border-top:1px solid rgba(0,0,0,.08);padding-top:12px}.mbi-pred-heading{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:#8aaa7a;margin:0 0 6px}.mbi-pred-item{font-size:.85rem;color:#2e4a2e;line-height:1.5;margin:0 0 5px;padding-left:12px;border-left:3px solid currentColor;opacity:.9}.mbi-interp-placeholder{font-size:.85rem;color:#aaa;font-style:italic;text-align:center;padding:12px 0;margin:0}@media(max-width:768px){.tools-grid{grid-template-columns:1fr}.mbi-sticky-header{top:58px;border-radius:8px}.mbi-header-score-row{gap:6px}.mbi-total-num{font-size:1.6rem}.mbi-interp-pill{display:none}}.moca-info-card{background:#fff;border:1.5px solid #d4eac8;border-radius:12px;overflow:hidden}.moca-info-header{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:#3a6b3a;background:#f0f9ea;padding:8px 16px;border-bottom:1px solid #d4eac8}.moca-info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px 16px;padding:14px 16px}.moca-info-field{display:flex;flex-direction:column;gap:4px}.moca-info-field--wide{grid-column:span 2}.moca-info-field label{font-size:.75rem;font-weight:700;color:#6a8a5a;text-transform:uppercase;letter-spacing:.05em}.moca-info-field input,.moca-info-field select{border:1.5px solid #c8e0ba;border-radius:8px;padding:7px 10px;font-family:inherit;font-size:.9rem;color:#333;background:#f9fdf5;transition:border-color .12s}.moca-info-field input:focus,.moca-info-field select:focus{outline:none;border-color:#3a6b3a}.moca-info-req{color:#c0392b}.moca-info-hint{font-size:.78rem;color:#8aaa7a;padding:0 16px 10px;margin:0;font-style:italic}.mbi-domain-title-block{display:flex;flex-direction:column;align-items:flex-start;gap:1px}.moca-domain-sub{font-size:.72rem;color:#8aaa7a;font-weight:600}.moca-domain--info .mbi-domain-hd{background:#fafdf8}.moca-domain--info .mbi-domain-idx{background:#8aaa7a}.moca-info-tag{font-size:.68rem;font-weight:700;color:#8aaa7a;background:#f0f9ea;border:1px solid #c8e0ba;border-radius:8px;padding:2px 7px;white-space:nowrap;flex-shrink:0}.moca-domain-body{padding:0}.moca-sub-section{padding:10px 16px 4px;border-bottom:1px solid #f2f8ee}.moca-sub-section:last-child{border-bottom:none}.moca-sub-heading{font-size:.78rem;font-weight:800;color:#3a6b3a;text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.moca-instruction{background:#f0f9ea;border-left:3px solid #3a6b3a;padding:8px 12px;margin-bottom:8px;font-size:.9rem;color:#1e3a1e;line-height:1.5;border-radius:0 6px 6px 0}.moca-scoring-note{font-size:.75rem;color:#8aaa7a;margin-bottom:8px;line-height:1.45;font-style:italic}.moca-score-btns{display:flex;gap:4px;flex-shrink:0}.moca-score-btn{width:34px;height:34px;display:flex;align-items:center;justify-content:center;border:1.5px solid #c8e0ba;border-radius:8px;font-size:.9rem;font-weight:800;color:#8aaa7a;cursor:pointer;background:#fff;transition:background .1s,color .1s,border-color .1s}.moca-score-btn:hover{background:#f0f9ea;border-color:#3a6b3a;color:#3a6b3a}.moca-score-btn--on{background:#3a6b3a;color:#fff;border-color:#3a6b3a}.moca-score-btn--on:hover{background:#2e5c2e}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.moca-item-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid #f5f8f2}.moca-item-row:last-child{border-bottom:none}.moca-item-lhs{flex:1;min-width:0}.moca-item-label{font-size:.88rem;font-weight:600;color:#2e4a2e;display:block}.moca-item-sub{font-size:.73rem;color:#8aaa7a;font-style:italic;display:block;margin-top:1px}.moca-word-list{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0 4px}.moca-word-chip{background:#eaf5e1;border:1.5px solid #b8d8a8;color:#1e4a1e;font-size:1.1rem;font-weight:700;padding:6px 16px;border-radius:20px;letter-spacing:.05em}.moca-reg-note{font-size:.78rem;color:#8aaa7a;font-style:italic;margin:8px 0 4px}.moca-digit-seq{font-size:1.3rem;font-weight:800;color:#1e4a1e;letter-spacing:.15em;background:#f0f9ea;border-radius:8px;padding:8px 14px;margin-bottom:6px;font-family:monospace}.moca-vigilance-seq{font-size:1.05rem;font-weight:700;color:#1e4a1e;letter-spacing:.18em;background:#f0f9ea;border-radius:8px;padding:10px 14px;margin-bottom:6px;font-family:monospace;line-height:1.7;word-spacing:4px}.moca-serial7-row{display:flex;align-items:flex-start;gap:6px;flex-wrap:wrap;margin-bottom:8px}.moca-serial7-start{font-size:1.1rem;font-weight:800;color:#3a6b3a;padding:6px 0;align-self:center}.moca-serial7-item{display:flex;flex-direction:column;align-items:center;gap:3px}.moca-s7-arrow{font-size:.65rem;color:#8aaa7a;font-weight:700}.moca-serial7-input{width:58px;padding:6px 8px;border:1.5px solid #c8e0ba;border-radius:8px;font-family:inherit;font-size:.9rem;font-weight:700;text-align:center;color:#333;background:#fff;transition:border-color .12s}.moca-serial7-input:focus{outline:none;border-color:#3a6b3a}.moca-serial7-input.correct{border-color:#27ae60;background:#eafaf1;color:#1e7e3e}.moca-serial7-input.wrong{border-color:#c0392b;background:#fff0ee;color:#c0392b}.moca-s7-check{font-size:.68rem;font-weight:700;height:14px}.moca-s7-check.correct{color:#27ae60}.moca-s7-check.wrong{color:#c0392b}.moca-serial7-score-row{display:flex;align-items:center;gap:8px;margin-top:4px;margin-bottom:4px}.moca-s7-label{font-size:.78rem;font-weight:700;color:#6a8a5a;text-transform:uppercase;letter-spacing:.06em}.moca-s7-result{font-size:.88rem;font-weight:800;color:#1e4a1e}.moca-s7-rule{font-size:.72rem;color:#8aaa7a;font-weight:400;margin-left:4px}.moca-fluency-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:6px 0}.moca-fluency-label{font-size:.88rem;font-weight:600;color:#2e4a2e}.moca-fluency-input{width:70px;padding:6px 8px;border:1.5px solid #c8e0ba;border-radius:8px;font-family:inherit;font-size:.9rem;font-weight:700;text-align:center;background:#f9fdf5}.moca-fluency-input:focus{outline:none;border-color:#3a6b3a}.moca-fluency-score{font-size:.85rem;font-weight:700}.moca-fluency-score.correct{color:#1e7e3e}.moca-fluency-score.wrong{color:#c0392b}.moca-recall-table{margin:8px 0 4px}.moca-recall-hd{display:grid;grid-template-columns:80px 1fr 1fr 1fr;gap:8px;font-size:.72rem;font-weight:800;color:#6a8a5a;text-transform:uppercase;letter-spacing:.05em;padding:4px 0 6px;border-bottom:1.5px solid #d4eac8}.moca-recall-hd em{font-style:normal;font-weight:400;color:#8aaa7a;letter-spacing:0;text-transform:none}.moca-recall-row{display:grid;grid-template-columns:80px 1fr 1fr 1fr;gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid #f5f8f2;transition:background .1s}.moca-recall-row--correct{background:#f0f9ea}.moca-recall-word{font-size:1rem;font-weight:700;color:#1e4a1e}.moca-recall-check{display:flex;align-items:center;gap:6px;font-size:.78rem;color:#5a6a50;cursor:pointer}.moca-recall-check input{accent-color:#8aaa7a}.moca-mc-chips{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.moca-mc-chip{font-size:.72rem;font-weight:600;font-family:inherit;padding:3px 8px;border-radius:8px;border:1px solid #d4eac8;background:#f8fcf5;color:#5a7a5a;cursor:pointer;white-space:nowrap;line-height:1.3}.moca-mc-chip:hover{background:#eef7e6}.moca-mc-chip--correct{border-color:#8aaa7a}.moca-mc-chip--selected{background:#557c55;color:#fff;border-color:#557c55}.moca-mc-chip--selected.moca-mc-chip--correct{background:#2e6b2e;border-color:#2e6b2e}.moca-interp-panel{border-color:#d4eac8;background:#fafdf8}.moca-domain-summary{margin-bottom:16px}.moca-domain-row{display:flex;align-items:center;gap:10px;padding:4px 0}.moca-domain-row-label{font-size:.8rem;color:#5a6a50;min-width:180px;flex-shrink:0}.moca-domain-row-bar{flex:1;height:6px;background:#e0ecd8;border-radius:3px;overflow:hidden}.moca-domain-row-fill{height:100%;background:#3a6b3a;border-radius:3px;transition:width .3s}.moca-domain-row-score{font-size:.8rem;font-weight:700;color:#3a6b3a;min-width:32px;text-align:right}.moca-total-row{display:flex;justify-content:space-between;align-items:center;border-top:1.5px solid #d4eac8;padding-top:8px;margin-top:6px;font-size:.9rem;font-weight:700;color:#1e4a1e}.moca-total-val{font-size:1.2rem;font-weight:800;color:#1e4a1e}.moca-norm-section{border-top:1px solid rgba(0,0,0,.07);padding-top:14px;margin-top:4px}.moca-norm-unavail{font-size:.85rem;color:#8aaa7a;font-style:italic;margin:4px 0}.moca-norm-result{border:1.5px solid;border-radius:10px;padding:12px 16px;margin:8px 0 6px}.moca-norm-level{font-size:1.15rem;font-weight:800;margin-bottom:4px}.moca-norm-detail{font-size:.82rem;color:#5a6a50;margin-bottom:4px}.moca-norm-cutoffs{font-size:.78rem;color:#8aaa7a;font-style:italic}.moca-clinical-note{font-size:.82rem;color:#8aaa7a;border-left:3px solid #c8e0ba;padding-left:10px;margin:8px 0 0;line-height:1.55}.moca-no-norm-pill{font-size:.75rem;font-weight:700;padding:4px 10px;border-radius:12px;background:#fef5eb;color:#c0641c;border:1px solid #f0c49e;white-space:nowrap;flex-shrink:0}@media(max-width:768px){.moca-info-field--wide{grid-column:span 1}.moca-recall-hd,.moca-recall-row{grid-template-columns:60px 60px 1fr 1fr;font-size:.72rem}.moca-serial7-row{gap:4px}.moca-serial7-input{width:48px}.moca-domain-row-label{min-width:120px;font-size:.72rem}}
