:root{color-scheme:light;font-family:Segoe UI,Noto Sans TC,sans-serif;line-height:1.5;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px)}*{box-sizing:border-box}body{margin:0;overflow:hidden;color:#1c2431;-webkit-text-size-adjust:100%}.app-root{position:relative;width:100vw;height:100vh;height:100dvh;overflow:hidden}.map-container{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.map-container .map-provider{width:100%;height:100%;border:none;border-radius:0;padding:0;background:transparent}.map-container .maplibregl-ctrl-top-right{top:calc(52px + var(--safe-top))}.overlay-timeline,.overlay-filters-desktop{background:#ffffffeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(214,228,255,.6);box-shadow:0 8px 32px #1830541f}.mobile-popup{background:#ffffffc7;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(214,228,255,.5);box-shadow:0 8px 32px #1830542e}.overlay-top-bar{position:absolute;top:calc(16px + var(--safe-top));left:50%;transform:translate(-50%);z-index:12;display:flex;align-items:center;gap:8px}.panel-toggle{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid rgba(190,208,245,.8);background:#ffffffe6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:999px;cursor:pointer;font-size:18px;color:#1c2431;box-shadow:0 2px 8px #00000014;transition:all .15s;flex-shrink:0}.panel-toggle:hover{background:#e6f0fff2}.panel-toggle.active{background:#2455c4;color:#fff;border-color:#2455c4}.overlay-timeline{position:relative;border-radius:16px;padding:0;width:auto}.window-hint{font-size:11px;color:#6b7280;font-weight:400}.year-dial-trigger{display:flex;align-items:center;gap:8px;padding:10px 22px;border:none;background:transparent;cursor:pointer;font:inherit;color:#1c2431;-webkit-tap-highlight-color:transparent;transition:background .15s;border-radius:16px}.year-dial-trigger:hover{background:#2455c40f}.year-dial-trigger.active{background:#2455c41a}.year-dial-trigger-year{font-size:18px;font-weight:700;color:#2455c4}.year-dial-popup{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:8px;width:min(520px,calc(100vw - 32px));background:#fffffff2;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(214,228,255,.6);box-shadow:0 12px 48px #1830542e;border-radius:0 0 50% 50%/0 0 40% 40%;overflow:hidden;animation:dialSlideIn .25s cubic-bezier(.34,1.56,.64,1);z-index:20;padding-bottom:18px}@keyframes dialSlideIn{0%{opacity:0;transform:translate(-50%) translateY(-8px) scaleY(.6)}to{opacity:1;transform:translate(-50%) translateY(0) scaleY(1)}}.year-dial-value{text-align:center;font-size:22px;font-weight:700;color:#2455c4;padding:14px 0 8px;pointer-events:none}.year-dial-track{position:relative;height:72px;cursor:grab;user-select:none;-webkit-user-select:none;overflow:hidden}.year-dial-track:active{cursor:grabbing}.year-dial-ticks{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.year-dial-tick{position:absolute;top:0;display:flex;flex-direction:column;align-items:center;transform:translate(-50%)}.year-dial-tick .tick-line{width:1px;background:#b0c4e8;transition:height .1s}.year-dial-tick.tiny .tick-line{height:14px;background:#d0ddf0}.year-dial-tick.minor .tick-line{height:24px;background:#94b0da}.year-dial-tick.medium .tick-line{height:34px;width:1.5px;background:#6891c4}.year-dial-tick.major .tick-line{height:40px;width:2px;background:#2455c4}.year-dial-tick .tick-label{margin-top:4px;font-size:10px;color:#5a7399;white-space:nowrap;font-weight:600}.year-dial-tick.major .tick-label{font-size:11px;color:#2455c4;font-weight:700}.year-dial-needle{position:absolute;top:0;left:50%;transform:translate(-50%);width:3px;height:100%;background:linear-gradient(to bottom,#2455c4,#2455c44d);border-radius:2px;pointer-events:none;box-shadow:0 0 6px #2455c44d}.year-dial-needle:before{content:"";position:absolute;top:-4px;left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:7px solid #2455c4}.year-dial-window-controls{padding:4px 16px 8px;display:flex;flex-direction:column;align-items:center;gap:6px}.window-presets{display:flex;gap:4px;flex-wrap:wrap;justify-content:center}.window-preset-btn{padding:3px 10px;font-size:11px;font-weight:600;border:1px solid rgba(36,85,196,.25);border-radius:999px;background:#ffffffb3;color:#5a7399;cursor:pointer;transition:all .15s;font-family:inherit;line-height:1.4}.window-preset-btn:hover{background:#2455c414;border-color:#2455c466}.window-preset-btn.active{background:#2455c4;color:#fff;border-color:#2455c4}.window-custom-range{display:flex;align-items:center;gap:6px}.range-input{width:80px;padding:4px 8px;font-size:12px;border:1px solid rgba(36,85,196,.3);border-radius:8px;background:#fffc;color:#1c2431;text-align:center;font-family:inherit;outline:none;transition:border-color .15s}.range-input:focus{border-color:#2455c4;box-shadow:0 0 0 2px #2455c426}.range-input::-webkit-inner-spin-button,.range-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.range-input{-moz-appearance:textfield}.range-separator{color:#5a7399;font-size:14px;font-weight:600}.range-apply-btn{padding:4px 12px;font-size:12px;font-weight:600;border:1px solid #2455c4;border-radius:8px;background:#2455c4;color:#fff;cursor:pointer;font-family:inherit;transition:opacity .15s}.range-apply-btn:hover{opacity:.85}.tick-density{width:6px;min-height:3px;background:linear-gradient(to top,#ff8c00,#ff4500);border-radius:3px 3px 0 0;margin-bottom:1px;transition:height .2s;box-shadow:0 0 5px #ff45008c}.year-dial-tick.major .tick-density,.year-dial-tick.medium .tick-density{width:8px;background:linear-gradient(to top,#ff7a00,#f30);box-shadow:0 0 7px #ff3300a6}.overlay-filters-desktop{position:absolute;top:calc(100px + var(--safe-top));left:50%;transform:translate(-50%);z-index:10;border-radius:14px;padding:14px 20px;width:min(720px,calc(100vw - 32px))}.filter-row{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.filter-row .control{display:flex;flex-direction:column;gap:4px;font-size:13px;flex:1;min-width:120px}.filter-row .control select,.filter-row .control input{border:1px solid #c6d5f4;border-radius:8px;padding:8px 10px;font:inherit;font-size:16px;background:#fff;color:#1c2431;min-height:44px}.overlay-mode-switch{position:absolute;top:calc(16px + var(--safe-top));right:calc(16px + var(--safe-right));z-index:10;display:flex;gap:6px}.overlay-mode-switch button{border:1px solid rgba(190,208,245,.8);background:#ffffffe6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:999px;padding:6px 12px;cursor:pointer;font-size:13px;min-height:40px;min-width:40px;transition:all .15s}.overlay-mode-switch button.active{background:#2455c4;color:#fff;border-color:#2455c4}.total-events-badge{position:absolute;top:calc(60px + var(--safe-top));right:calc(16px + var(--safe-right));z-index:10;font-size:11px;font-weight:600;color:#5a7399;background:#ffffffd9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(214,228,255,.5);border-radius:999px;padding:3px 10px;pointer-events:none}.desktop-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:9;cursor:default}.desktop-event-panel{position:absolute;top:calc(80px + var(--safe-top));left:50%;transform:translate(-50%);bottom:calc(32px + var(--safe-bottom));z-index:10;width:600px;max-width:calc(100vw - 32px);border-radius:16px;display:flex;flex-direction:column;overflow:hidden;background:#ffffffeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(214,228,255,.6);box-shadow:0 12px 48px #18305433;animation:panelSlideUp .3s ease-out}@keyframes panelSlideUp{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.desktop-panel-close{position:absolute;top:12px;right:12px;z-index:2;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:999px;background:#0006;color:#fff;font-size:16px;cursor:pointer;transition:background .15s}.desktop-panel-close:hover{background:#0009}.desktop-card-content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.desktop-card-footer{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;border-top:1px solid rgba(214,228,255,.4);padding:0}.desktop-card-counter{font-size:13px;color:#48618d;-webkit-user-select:none;user-select:none}.desktop-carousel-arrow{display:flex;align-items:center;justify-content:center;width:48px;height:44px;border:none;background:transparent;color:#2455c4;font-size:28px;cursor:pointer;transition:background .15s}.desktop-carousel-arrow:hover{background:#2455c40f}.desktop-carousel-arrow:disabled{color:#c6d5f4;cursor:default}.event-count{margin:0;color:#48618d;font-size:13px}.event-detail-hero{position:relative;width:100%;height:280px;overflow:hidden;background:#e8eef8;flex-shrink:0}.event-detail-hero img{width:100%;height:100%;object-fit:cover}.event-detail-hero-video{height:0;padding-bottom:56.25%;background:#000}.event-detail-hero-video iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.image-attribution{position:absolute;bottom:0;left:0;right:0;padding:2px 8px;background:#0000008c;color:#fff;font-size:10px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-detail-body{padding:16px 20px 20px}.event-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.event-detail-body h3{margin:6px 0 10px;font-size:17px;flex:1;min-width:0}.wikipedia-icon-link{display:flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border-radius:8px;background:#f6f9ff;border:1px solid #d6e4ff;color:#36c;transition:all .2s;text-decoration:none}.wikipedia-icon-link:hover{background:#36c;color:#fff;border-color:#36c;transform:translateY(-1px);box-shadow:0 2px 8px #3366cc40}.wikipedia-icon{width:18px;height:18px}.event-detail-time{margin:0 0 12px;font-size:14px;color:#4d638b;font-weight:500}.event-detail-body ul{padding-left:16px;font-size:13px}.event-detail-links{display:flex;gap:12px;margin-top:4px}.event-detail-links a{color:#2455c4;font-size:13px;text-decoration:none}.event-detail-links a:hover{text-decoration:underline}.event-detail-links a.wikipedia-link{background:#36c;color:#fff;padding:6px 14px;border-radius:6px;font-weight:500;transition:background .2s}.event-detail-links a.wikipedia-link:hover{background:#2952a8;text-decoration:none}.event-detail-attribution{margin-top:16px;padding-top:12px;border-top:1px solid rgba(214,228,255,.5)}.attribution-text{font-size:11px;color:#5c6c84;margin:0;line-height:1.6}.attribution-link{color:#36c;text-decoration:none}.attribution-link:hover{text-decoration:underline}.event-summary{font-size:13px;margin:0 0 8px}.pill{display:inline-block;margin:0;padding:2px 8px;border-radius:999px;background:#edf2ff;color:#264b98;font-size:11px;text-transform:capitalize}.overlay-filters-desktop{animation:fadeIn .2s ease}.map-loading-overlay{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:800;display:flex;align-items:center;gap:10px;background:#000000b3;color:#fff;padding:12px 22px;border-radius:999px;font-size:14px;pointer-events:none;animation:fadeIn .2s ease}.map-loading-spinner{width:18px;height:18px;border:2.5px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.map-toast-no-events{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:800;background:#000000bf;color:#fff;padding:12px 28px;border-radius:999px;font-size:14px;pointer-events:none;animation:toastFadeInOut 3s ease forwards}@keyframes toastFadeInOut{0%{opacity:0;transform:translate(-50%,-50%) scale(.92)}10%{opacity:1;transform:translate(-50%,-50%) scale(1)}80%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(.96)}}.status{border-radius:8px;padding:8px 10px;margin:8px;font-size:13px}.status.loading{background:#f4f8ff;border:1px solid #ccdaf5;color:#355286}.topic-ingest-container{padding:16px;background:#ffffff0d;border-radius:8px;margin-top:16px;border:1px solid rgba(255,255,255,.1)}.topic-ingest-container h3{margin:0 0 8px;font-size:.9rem;opacity:.8;text-transform:uppercase;letter-spacing:.5px}.ingest-input-group{display:flex;gap:8px}.ingest-input-group input{flex:1;background:#0000004d;border:1px solid rgba(255,255,255,.2);padding:8px;border-radius:4px;color:#fff;font-size:.9rem}.ingest-input-group button{padding:8px 12px;background:var(--primary-color, #4a90e2);border:none;border-radius:4px;color:#fff;cursor:pointer;font-weight:700}.ingest-input-group button:disabled{opacity:.5;cursor:not-allowed}.ingest-status{margin:8px 0 0;font-size:.85rem}.ingest-status.loading{color:#aaa}.ingest-status.success{color:#4caf50}.ingest-status.error{color:#f44336}.status.error{background:#fff5f5;border:1px solid #f0b9b9;color:#8b3030}.status.error p{margin:0 0 6px}.status button{border:1px solid #d99696;background:#fff;color:#7a2525;border-radius:999px;padding:6px 14px;cursor:pointer;font-size:13px;min-height:36px}.empty{margin:0;padding:12px;border:1px dashed #bfd0ef;border-radius:8px;color:#526482;font-size:13px}.mobile-fab,.mobile-backdrop,.mobile-popup{display:none}@media(max-width:768px){.overlay-top-bar{top:auto;bottom:calc(12px + var(--safe-bottom));left:72px;right:72px;transform:none}.overlay-timeline{width:100%;padding:0;border-radius:999px}.year-dial-trigger{width:100%;padding:0 20px;gap:6px;height:52px;border-radius:999px;justify-content:center;text-align:center}.year-dial-trigger-year{font-size:15px}.year-dial-popup{top:auto;bottom:100%;margin-top:0;margin-bottom:8px;width:calc(100vw - 24px);border-radius:50% 50% 0 0/40% 40% 0 0;padding-bottom:12px;animation-name:dialSlideInMobile}@keyframes dialSlideInMobile{0%{opacity:0;transform:translate(-50%) translateY(8px) scaleY(.6)}to{opacity:1;transform:translate(-50%) translateY(0) scaleY(1)}}.year-dial-value{font-size:18px;padding:10px 0 6px}.year-dial-track{height:60px}.year-dial-window-controls{padding:2px 10px 6px}.window-preset-btn{padding:2px 8px;font-size:10px}.range-input{width:64px;padding:3px 6px;font-size:11px}.range-apply-btn{padding:3px 10px;font-size:11px}.tick-density{width:5px}.overlay-mode-switch{top:calc(8px + var(--safe-top));right:calc(8px + var(--safe-right))}.total-events-badge{top:calc(52px + var(--safe-top));right:calc(8px + var(--safe-right));font-size:10px;padding:2px 8px}.mobile-fab{display:flex;align-items:center;justify-content:center;position:absolute;bottom:calc(12px + var(--safe-bottom));z-index:12;width:52px;height:52px;border-radius:999px;border:1px solid rgba(214,228,255,.6);background:#ffffffeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 16px #18305426;cursor:pointer;font-size:22px;color:#2455c4;-webkit-tap-highlight-color:transparent;transition:background .15s,color .15s}.mobile-fab.active{background:#2455c4;color:#fff;border-color:#2455c4}.mobile-fab-events{left:calc(12px + var(--safe-left))}.mobile-fab-filters{right:calc(12px + var(--safe-right))}.mobile-backdrop{display:block;position:absolute;top:0;right:0;bottom:0;left:0;z-index:14;background:#00000040;-webkit-tap-highlight-color:transparent}.mobile-popup{display:flex;flex-direction:column;position:absolute;z-index:15;border-radius:16px;overflow:hidden;opacity:0;transform:translateY(20px);pointer-events:none;transition:opacity .25s ease,transform .25s ease}.mobile-popup.open{opacity:1;transform:translateY(0);pointer-events:auto}.mobile-popup-events{left:calc(12px + var(--safe-left));bottom:calc(76px + var(--safe-bottom));width:calc(100vw - 24px - var(--safe-left) - var(--safe-right));max-height:60vh}.mobile-popup-filters{right:calc(12px + var(--safe-right));bottom:calc(76px + var(--safe-bottom));width:calc(100vw - 24px - var(--safe-left) - var(--safe-right));max-height:50vh}.mobile-popup-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid rgba(214,228,255,.4);flex-shrink:0}.mobile-popup-header h2{margin:0;font-size:16px}.mobile-popup-header button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid #d6e4ff;background:#f6f9ff;border-radius:999px;font-size:18px;color:#48618d;cursor:pointer;-webkit-tap-highlight-color:transparent}.mobile-popup .event-count{padding:0 16px 8px}.mobile-card-carousel{display:flex;align-items:stretch;gap:0;flex:1;overflow:hidden}.carousel-arrow{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:40px;border:none;background:transparent;color:#2455c4;font-size:32px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s}.carousel-arrow:active{background:#2455c414}.carousel-arrow:disabled{color:#c6d5f4;cursor:default}.carousel-arrow-left{border-right:1px solid rgba(214,228,255,.3)}.carousel-arrow-right{border-left:1px solid rgba(214,228,255,.3)}.mobile-event-card{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.mobile-card-hero{position:relative;width:100%;height:140px;overflow:hidden;background:#e8eef8}.mobile-card-hero img{width:100%;height:100%;object-fit:cover}.mobile-card-hero-video{height:0;padding-bottom:56.25%;background:#000}.mobile-card-hero-video iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.mobile-card-body{padding:12px 16px 16px}.mobile-card-body .event-title-row{gap:10px}.mobile-card-body h3{margin:6px 0 4px;font-size:16px}.mobile-card-body .wikipedia-icon-link{width:30px;height:30px;border-radius:7px}.mobile-card-body .wikipedia-icon{width:16px;height:16px}.mobile-card-time{margin:0 0 8px;font-size:13px;color:#4d638b}.mobile-card-body ul{padding-left:16px;font-size:13px;margin:8px 0}.mobile-card-body .event-detail-links{margin-top:8px}.mobile-card-body .event-detail-attribution{margin-top:12px;padding-top:10px}.mobile-card-body .attribution-text{font-size:10px}.mobile-filter-controls{padding:16px;display:flex;flex-direction:column;gap:12px;overflow-y:auto;-webkit-overflow-scrolling:touch}.mobile-filter-controls .control{display:flex;flex-direction:column;gap:4px;font-size:13px}.mobile-filter-controls .control select,.mobile-filter-controls .control input{border:1px solid #c6d5f4;border-radius:8px;padding:10px 12px;font:inherit;font-size:16px;background:#fff;color:#1c2431;min-height:48px}.mobile-popup .status button{min-height:40px;padding:8px 16px}}@media(max-width:380px){.overlay-top-bar{left:56px;right:56px}.year-dial-trigger{padding:0 14px;height:46px}.year-dial-trigger-year{font-size:13px}.mobile-fab{width:46px;height:46px;font-size:20px}.mobile-popup-events,.mobile-popup-filters{max-height:55vh}}.topic-ingest-btn{background:linear-gradient(135deg,#3b82f6,#2563eb)!important;color:#fff!important;border:none!important;border-radius:8px!important;padding:8px 16px!important;height:auto!important;font-size:14px!important;font-weight:600;cursor:pointer;transition:all .2s;box-shadow:0 2px 4px #0000001a;display:flex!important;align-items:center;gap:6px;white-space:nowrap;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.topic-ingest-icon{font-size:18px;line-height:1}.topic-ingest-label{font-size:13px;font-weight:500}.topic-ingest-btn:hover{transform:translateY(-1px);box-shadow:0 4px 8px #00000026;background:linear-gradient(135deg,#2563eb,#1d4ed8)}.topic-ingest-btn:active{transform:translateY(0)}.topic-ingest-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:9998;animation:fadeIn .2s ease-out}.topic-ingest-dialog{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;z-index:9999;width:90vw;max-width:600px;max-height:80vh;display:flex;flex-direction:column;animation:slideUp .3s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translate(-50%,-45%)}to{opacity:1;transform:translate(-50%,-50%)}}.topic-ingest-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #e5e7eb}.topic-ingest-header h2{margin:0;font-size:20px;font-weight:600;color:#1c2431}.topic-ingest-close{background:none;border:none;font-size:24px;color:#6b7280;cursor:pointer;padding:4px;width:32px;height:32px;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all .2s}.topic-ingest-close:hover{background:#f3f4f6;color:#1c2431}.topic-ingest-body{padding:24px;overflow-y:auto;flex:1}.topic-search-form{margin-bottom:20px}.topic-search-input-group{display:flex;gap:12px}.topic-search-input-group input{flex:1;border:2px solid #e5e7eb;border-radius:8px;padding:12px 16px;font-size:16px;font-family:inherit;transition:border-color .2s}.topic-search-input-group input:focus{outline:none;border-color:#3b82f6}.topic-search-input-group button{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s;min-width:80px}.topic-search-input-group button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #3b82f666}.topic-search-input-group button:disabled{opacity:.6;cursor:not-allowed}.topic-status{padding:12px 16px;border-radius:8px;margin:16px 0;font-size:14px}.topic-status.loading{background:#eff6ff;color:#1e40af;border-left:4px solid #3b82f6}.topic-status.success{background:#f0fdf4;color:#166534;border-left:4px solid #22c55e}.topic-status.error{background:#fef2f2;color:#991b1b;border-left:4px solid #ef4444}.topic-suggestions{margin-top:16px}.topic-suggestions-label{font-size:14px;color:#6b7280;margin-bottom:8px}.topic-suggestions-list{display:flex;flex-wrap:wrap;gap:8px}.topic-suggestion-chip{background:#f3f4f6;border:1px solid #e5e7eb;border-radius:20px;padding:6px 14px;font-size:14px;cursor:pointer;transition:all .2s}.topic-suggestion-chip:hover{background:#e5e7eb;border-color:#d1d5db}.topic-preview{display:flex;flex-direction:column;gap:16px}.topic-preview-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:12px;border-bottom:2px solid #e5e7eb}.topic-preview-header h3{margin:0;font-size:18px;font-weight:600;color:#1c2431}.topic-preview-count{font-size:14px;color:#6b7280;background:#f3f4f6;padding:4px 12px;border-radius:12px}.topic-preview-list{display:flex;flex-direction:column;gap:12px;max-height:400px;overflow-y:auto}.topic-preview-item{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:16px;transition:all .2s}.topic-preview-item:hover{background:#f3f4f6;border-color:#d1d5db}.topic-preview-item-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px}.topic-preview-item-header h4{margin:0;font-size:16px;font-weight:600;color:#1c2431;flex:1}.topic-preview-item-year{font-size:14px;color:#6b7280;background:#fff;padding:4px 8px;border-radius:4px;white-space:nowrap}.topic-preview-item-summary{margin:0 0 12px;font-size:14px;color:#4b5563;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.topic-preview-item-meta{display:flex;gap:8px;flex-wrap:wrap}.topic-preview-item-category,.topic-preview-item-region{font-size:12px;padding:4px 8px;border-radius:4px;background:#fff;color:#6b7280;border:1px solid #e5e7eb}.topic-preview-more{text-align:center;color:#6b7280;font-size:14px;padding:8px;font-style:italic}.topic-preview-actions{display:flex;gap:12px;justify-content:flex-end;padding-top:16px;border-top:1px solid #e5e7eb}.topic-btn{padding:10px 20px;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s;border:none}.topic-btn-secondary{background:#f3f4f6;color:#4b5563}.topic-btn-secondary:hover{background:#e5e7eb}.topic-btn-primary{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}.topic-btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #3b82f666}.topic-btn-primary:disabled{opacity:.6;cursor:not-allowed}@media(max-width:768px){.topic-ingest-btn{padding:8px 12px;min-width:40px}.topic-ingest-label{display:none}.topic-ingest-icon{font-size:20px}.topic-ingest-dialog{width:95vw;max-height:90vh}.topic-ingest-header{padding:16px 20px}.topic-ingest-body{padding:20px}.topic-preview-list{max-height:300px}.topic-btn{padding:12px 18px;font-size:15px}}
