:root{--ink:#18362f;--muted:#5d706a;--accent:#156a53;--paper:#f5f7f3;--surface:#fff;--line:#d7e1d9;--focus:#b06b16;--radius:12px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif;color:var(--ink);background:var(--paper);font-size:16px;line-height:1.65;font-synthesis:none}*{box-sizing:border-box}body{margin:0}a{color:var(--accent);text-underline-offset:4px}button,input,select,textarea{font:inherit}button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:3px}::selection{background:#cee9dc;color:var(--ink)}input,textarea{caret-color:var(--accent)}[hidden]{display:none!important}.topbar{min-height:88px;padding:20px 5vw;background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-size:23px;font-weight:650;letter-spacing:-.02em}.brand-mark{width:36px;height:36px;display:grid;place-items:center;background:var(--accent);color:#fff;border-radius:9px}.brand-by{font-size:11px;font-weight:600;letter-spacing:.08em;color:var(--muted);margin-left:8px}.top-note{font-size:13px;color:var(--muted)}.topbar nav{display:flex;gap:28px;align-items:center;font-size:14px}.topbar nav a{text-decoration:none;color:var(--ink)}.topbar nav a:hover{text-decoration:underline}.topbar form{margin:0}.text-button{background:none;border:0;color:var(--muted);padding:5px}.public-layout{max-width:1120px;margin:72px auto 96px;display:grid;grid-template-columns:1fr 1.25fr;gap:80px;padding:0 28px;align-items:start}.intro{padding-top:28px}.intro-line{width:48px;height:3px;background:var(--accent);margin-bottom:28px}h1{font-size:36px;line-height:1.3;letter-spacing:-.025em;margin:0 0 16px;font-weight:650;text-wrap:balance}h2{font-size:19px;line-height:1.4;margin:32px 0 16px;font-weight:650}.lead{font-size:19px;color:var(--muted);max-width:30ch}.privacy{font-size:14px;color:var(--muted);border-top:1px solid var(--line);padding-top:24px;margin-top:48px;max-width:42ch}.languages{display:flex;flex-wrap:wrap;gap:20px;margin-top:28px;font-size:13px}.languages a{color:var(--muted)}.languages a[aria-current]{color:var(--accent);font-weight:700}.form-panel{background:var(--surface);padding:36px;border:1px solid var(--line);border-radius:var(--radius)}fieldset{border:0;margin:0;padding:0;min-width:0}legend{font-size:14px;font-weight:600;padding:0;margin-bottom:10px}.field{margin-bottom:24px}label{display:block;font-size:14px;font-weight:600;margin-bottom:8px}input:not([type=checkbox]):not([type=file]),select,textarea{display:block;width:100%;border:1px solid #aabdb3;background:#fff;border-radius:6px;padding:11px 12px;min-height:46px;color:var(--ink)}input::placeholder,textarea::placeholder{color:#687b73;opacity:1}textarea{resize:vertical;min-height:145px}input[type=file]{font-size:13px;width:100%;padding:12px;border:1px dashed #91aa9b;border-radius:6px}input::file-selector-button{background:#eaf2ec;color:var(--ink);border:0;padding:8px 12px;border-radius:4px;margin-right:10px;cursor:pointer}.hint{font-size:12px;color:var(--muted);margin:8px 0 0;line-height:1.6}.counter{text-align:right;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;margin-top:5px}.check{display:flex;gap:10px;align-items:start;font-weight:500;cursor:pointer}.check input{width:18px;height:18px;margin:3px 0;accent-color:var(--accent);flex-shrink:0}.consent{border-top:1px solid var(--line);padding-top:22px;margin:28px 0}.consent .hint{margin-left:28px}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;gap:24px;border-radius:6px;padding:11px 18px;min-height:46px;font-size:14px;font-weight:600;text-decoration:none}.primary{background:var(--accent);color:#fff;border:1px solid var(--accent)}.primary:hover{background:#10533f}.secondary{background:var(--surface);color:var(--ink);border:1px solid #aabdb3}.secondary:hover{background:#edf3ee}#send{width:100%;justify-content:space-between}#again{width:100%;margin-top:12px}#feedback-status,.notice{padding:14px 16px;background:#e3f1e8;border:1px solid #accdb7;border-radius:6px;font-size:14px}.error{background:#fff0ec!important;border-color:#dfb2a4!important;color:#8b3321!important}.previews{display:flex;gap:10px;margin-top:12px}.previews img{width:76px;height:76px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}.footer{border-top:1px solid var(--line);max-width:1280px;margin:0 auto;padding:24px 28px;font-size:12px;font-weight:650;color:var(--muted);display:flex;justify-content:space-between}.footer span{font-weight:400}.login-layout{max-width:480px;padding:60px 24px 100px;margin:auto}.login-panel h1{font-size:30px}.login-panel form{margin-top:32px}.login-panel .primary{width:100%;justify-content:space-between}.back-link{display:inline-block;font-size:13px;margin:20px 18px 16px 0}.muted{color:var(--muted)}.admin-layout{max-width:1280px;margin:48px auto 80px;padding:0 32px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:32px}.page-heading h1{font-size:32px;margin:0 0 8px}.page-heading p{font-size:14px;margin:0}.total{color:var(--muted);font-size:14px;white-space:nowrap}.filters{display:flex;align-items:end;flex-wrap:wrap;gap:14px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:24px 0;margin-bottom:28px}.filters>div{flex:1;min-width:130px}.filters label{font-size:12px}.filters select,.filters input{font-size:14px}.filters>a{font-size:13px;padding:10px 4px}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:8px}table{width:100%;border-collapse:collapse;text-align:left;font-size:14px}th{font-size:12px;color:var(--muted);font-weight:600;background:#f0f4ee;padding:14px 20px;white-space:nowrap}td{padding:20px;border-top:1px solid var(--line);min-width:110px;vertical-align:top}td:first-child{min-width:230px;max-width:440px}td small,.app-row small{display:block;color:var(--muted);font-size:12px;margin-top:5px}tr:hover td{background:#f9fbf8}.message-link{font-weight:550;text-decoration:none;overflow-wrap:anywhere;color:var(--ink)}.message-link:hover{text-decoration:underline;color:var(--accent)}.date{font-size:12px;font-variant-numeric:tabular-nums}.status{display:inline-block;border-radius:4px;padding:3px 9px;font-size:12px;font-weight:600;white-space:nowrap}.status.new{background:#e6eff9;color:#28557f}.status.reviewing{background:#fff0d5;color:#805313}.status.resolved{background:#e0f0e5;color:#286344}.status.closed{background:#e9ece9;color:#536359}.empty{text-align:center;padding:64px 24px;background:#fff;border:1px dashed var(--line);border-radius:8px}.empty h2{margin-top:0}.empty p{color:var(--muted);font-size:14px}.pagination{display:flex;align-items:center;justify-content:center;gap:32px;font-size:13px;padding:28px}.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:60px}.detail-layout article>h2:first-child{margin-top:0}.message-body{background:#fff;border:1px solid var(--line);padding:28px;border-radius:8px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.85}.detail-aside{border-left:1px solid var(--line);padding-left:28px}.detail-aside h2{font-size:14px;margin-top:28px}.detail-aside p{font-size:13px}.detail-aside .primary{width:100%}.break{overflow-wrap:anywhere}dl{font-size:13px;display:grid;grid-template-columns:88px 1fr;gap:10px}dt{color:var(--muted)}dd{margin:0;overflow-wrap:anywhere}.attachment-grid{display:flex;gap:16px;flex-wrap:wrap}.attachment-grid img{width:150px;height:150px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:6px}.timeline{padding-left:20px;font-size:14px}.timeline li{padding:8px 0}.timeline small{display:block;color:var(--muted)}.apps-layout{display:grid;grid-template-columns:1.3fr 1fr;gap:60px}.apps-layout h2{margin-top:0}.new-app{border-left:1px solid var(--line);padding-left:36px}.app-row{background:#fff;border:1px solid var(--line);border-radius:8px;margin-bottom:14px}.app-row summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px;cursor:pointer}.app-row summary::after{content:'+';color:var(--muted)}.app-row[open] summary::after{content:'−'}.app-row form{border-top:1px solid var(--line);padding:22px}.app-row fieldset,.new-app fieldset{margin:18px 0}.new-app .primary{margin-top:14px;width:100%}@media(max-width:900px){.public-layout{gap:36px;grid-template-columns:1fr 1.25fr;margin-top:40px}.topbar nav{gap:16px}.brand-by{display:none}.detail-layout{gap:28px;grid-template-columns:minmax(0,1fr) 260px}.apps-layout{gap:30px}}@media(max-width:640px){.topbar{padding:18px 20px;min-height:72px;flex-wrap:wrap;gap:16px}.brand{font-size:21px}.top-note{display:none}.topbar nav{width:100%;justify-content:space-between;gap:10px;font-size:13px}.public-layout{display:block;margin:28px auto 48px;padding:0 20px}.intro{padding-top:0}.intro-line{margin-bottom:18px;width:34px}h1{font-size:30px}.lead{font-size:16px;max-width:none}.privacy{margin-top:22px;padding-top:16px;max-width:none;font-size:12px}.languages{margin:18px 0 28px}.form-panel{padding:24px 20px}.admin-layout{padding:0 20px;margin-top:30px}.page-heading h1{font-size:27px}.page-heading{align-items:start}.page-heading p{font-size:13px}.filters{gap:12px}.filters>div{min-width:calc(50% - 12px)}.detail-layout,.apps-layout{display:block}.detail-aside,.new-app{border-left:0;border-top:1px solid var(--line);padding:28px 0 0;margin-top:32px}.detail-layout .message-body{padding:20px}.detail-aside{max-width:none}.two-columns{grid-template-columns:1fr}.empty{padding:44px 20px}.total{font-size:12px;margin-top:7px}td{padding:15px}th{padding:12px 15px}.footer{margin:0 20px;padding:20px 0}.login-layout{padding-top:40px}}@media(prefers-reduced-motion:no-preference){button,a{transition:background-color .15s ease,color .15s ease}}

/* Match WeatherClock Portal native select controls across public and admin forms. */
select,.filters select{color-scheme:only light;font-size:15px;line-height:1.7;min-height:46px;min-width:0;border:1px solid #d8e1d9;background:#fff;border-radius:9px;padding:11px 13px;color:#18362e;margin-top:7px;touch-action:manipulation}
select:focus{outline:2px solid #c3d9ca;outline-offset:0;border-color:#266b56}
