/* 台北大洋流：共用版面（橘、米白、墨黑；四邊跑馬燈） */
:root { --orange: #ea611d; --cream: #f4efe6; --ink: #15171c; --sea: #03615a; --sea-light: #0a7a70; --sand: #ffe08a; }
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { height: 100%; background: var(--orange); }
body { isolation: isolate; margin: 0; min-height: 100%; min-height: 100dvh; display: flex; flex-direction: column; background: var(--orange); color: var(--ink); font-family: "PingFang TC", "Noto Sans TC", system-ui, sans-serif; -webkit-text-size-adjust: 100%; }
.bar { flex: none; height: 34px; background: #000 url("/assets/stage/strip.svg") repeat-x left center / auto 100%; animation: marquee 18.6s linear infinite; }
.bar.bottom { animation-direction: reverse; }
@keyframes marquee { from { background-position-x: 0; } to { background-position-x: -652px; } }
.site-head { display: flex; justify-content: space-between; align-items: center; padding: calc(env(safe-area-inset-top) + 10px) 18px 0; min-height: calc(env(safe-area-inset-top) + 50px); box-sizing: border-box; }   /* 頁首由腳本填入；先佔好高度，載入慢時下面的內容才不會跳 */
.site-head.home { min-height: calc(env(safe-area-inset-top) + 68px); }
.site-head img { height: 34px; }
.site-head img.brand { height: 40px; }
.site-head img.brand.big { height: 58px; }
.site-head a { display: inline-flex; }
main.page { flex: 1; display: flex; flex-direction: column; align-items: center; padding: 16px 22px 24px; max-width: 520px; width: 100%; margin: 0 auto; }
.title-logo { width: min(64%, 300px); margin: 6px auto 4px; display: block; }
.eyebrow { font-size: 11px; letter-spacing: .28em; opacity: .7; margin: 0 0 6px; }
h1.page-title { margin: 0 0 6px; font-size: 26px; font-weight: 800; letter-spacing: .06em; }
p.lead { margin: 0 0 14px; font-size: 15px; line-height: 1.7; font-weight: 500; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 14px 32px; border: 0; border-radius: 999px; background: var(--ink); color: var(--cream); font-size: 17px; font-weight: 800; letter-spacing: .1em; text-decoration: none; cursor: pointer; box-shadow: 0 6px 18px rgba(0, 0, 0, .25); }
.btn:disabled, .btn[aria-disabled="true"] { opacity: .4; box-shadow: none; cursor: default; }
.btn.light { background: var(--cream); color: var(--ink); }
.btn.ghost { background: transparent; color: var(--ink); border: 2px solid var(--ink); box-shadow: none; }
.btn.sm { padding: 10px 20px; font-size: 14px; }
.card { width: 100%; background: var(--cream); border: 3px solid var(--ink); border-radius: 14px; padding: 18px; box-shadow: 6px 6px 0 var(--ink); }
.toast { position: fixed; left: 50%; bottom: 60px; z-index: 30; transform: translateX(-50%); padding: 10px 16px; border-radius: 999px; background: rgba(21, 23, 28, .9); color: var(--cream); font-size: 14px; white-space: nowrap; opacity: 0; transition: opacity .3s; pointer-events: none; }
.toast.show { opacity: 1; }
input.field, textarea.field { width: 100%; padding: 12px 14px; border: 2px solid var(--ink); border-radius: 10px; background: #fff; color: var(--ink); font-family: inherit; font-size: 17px; outline: none; }
input.field:focus, textarea.field:focus { box-shadow: 0 0 0 3px rgba(234, 97, 29, .4); }
label.lbl { display: block; margin: 12px 0 6px; font-size: 13px; letter-spacing: .12em; font-weight: 700; }

/* 返回港口（首頁） */
.back { display: inline-flex; align-items: center; gap: 2px; padding: 6px 14px 6px 8px; border: 2px solid var(--ink); border-radius: 999px; background: var(--cream); color: var(--ink); font-size: 14px; font-weight: 800; letter-spacing: .08em; text-decoration: none; box-shadow: 3px 3px 0 var(--ink); }
.back svg { width: 18px; height: 18px; }
.back:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 var(--ink); }

/* 背景：像旗面一樣起伏的 S 形明暗褶紋，橫向流動並上下波動；只用 transform 動畫 */
.flag-bg { position: fixed; top: 0; bottom: 0; left: 50%; z-index: -1; width: 100%; overflow: hidden; transform: translateX(-50%); pointer-events: none; animation: flag-breathe 6s ease-in-out infinite alternate; }
.flag-bg i { position: absolute; top: 0; left: 0; background-repeat: repeat; will-change: transform; }
.flag-bg i:nth-child(1) { width: calc(100% + 520px); height: calc(100% + 1400px); background-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22520%22%20height=%221400%22%20viewBox=%220%200%20520%201400%22%3E%3Cdefs%3E%3Cfilter%20id=%22b%22%20x=%22-50%25%22%20y=%22-10%25%22%20width=%22200%25%22%20height=%22120%25%22%3E%3CfeGaussianBlur%20stdDeviation=%2234%22/%3E%3C/filter%3E%3C/defs%3E%3Cg%20filter=%22url%28%23b%29%22%3E%3Cpath%20d=%22M-435.0,0.0%20L-427.8,35.0%20L-420.8,70.0%20L-414.1,105.0%20L-408.0,140.0%20L-402.5,175.0%20L-397.8,210.0%20L-394.0,245.0%20L-391.3,280.0%20L-389.6,315.0%20L-389.0,350.0%20L-389.6,385.0%20L-391.3,420.0%20L-394.0,455.0%20L-397.8,490.0%20L-402.5,525.0%20L-408.0,560.0%20L-414.1,595.0%20L-420.8,630.0%20L-427.8,665.0%20L-435.0,700.0%20L-442.2,735.0%20L-449.2,770.0%20L-455.9,805.0%20L-462.0,840.0%20L-467.5,875.0%20L-472.2,910.0%20L-476.0,945.0%20L-478.7,980.0%20L-480.4,1015.0%20L-481.0,1050.0%20L-480.4,1085.0%20L-478.7,1120.0%20L-476.0,1155.0%20L-472.2,1190.0%20L-467.5,1225.0%20L-462.0,1260.0%20L-455.9,1295.0%20L-449.2,1330.0%20L-442.2,1365.0%20L-435.0,1400.0%20L-325.0,1400.0%20L-332.2,1365.0%20L-339.2,1330.0%20L-345.9,1295.0%20L-352.0,1260.0%20L-357.5,1225.0%20L-362.2,1190.0%20L-366.0,1155.0%20L-368.7,1120.0%20L-370.4,1085.0%20L-371.0,1050.0%20L-370.4,1015.0%20L-368.7,980.0%20L-366.0,945.0%20L-362.2,910.0%20L-357.5,875.0%20L-352.0,840.0%20L-345.9,805.0%20L-339.2,770.0%20L-332.2,735.0%20L-325.0,700.0%20L-317.8,665.0%20L-310.8,630.0%20L-304.1,595.0%20L-298.0,560.0%20L-292.5,525.0%20L-287.8,490.0%20L-284.0,455.0%20L-281.3,420.0%20L-279.6,385.0%20L-279.0,350.0%20L-279.6,315.0%20L-281.3,280.0%20L-284.0,245.0%20L-287.8,210.0%20L-292.5,175.0%20L-298.0,140.0%20L-304.1,105.0%20L-310.8,70.0%20L-317.8,35.0%20L-325.0,0.0%20Z%22%20fill=%22%23fff%22%20fill-opacity=%220.19%22/%3E%3Cpath%20d=%22M85.0,0.0%20L92.2,35.0%20L99.2,70.0%20L105.9,105.0%20L112.0,140.0%20L117.5,175.0%20L122.2,210.0%20L126.0,245.0%20L128.7,280.0%20L130.4,315.0%20L131.0,350.0%20L130.4,385.0%20L128.7,420.0%20L126.0,455.0%20L122.2,490.0%20L117.5,525.0%20L112.0,560.0%20L105.9,595.0%20L99.2,630.0%20L92.2,665.0%20L85.0,700.0%20L77.8,735.0%20L70.8,770.0%20L64.1,805.0%20L58.0,840.0%20L52.5,875.0%20L47.8,910.0%20L44.0,945.0%20L41.3,980.0%20L39.6,1015.0%20L39.0,1050.0%20L39.6,1085.0%20L41.3,1120.0%20L44.0,1155.0%20L47.8,1190.0%20L52.5,1225.0%20L58.0,1260.0%20L64.1,1295.0%20L70.8,1330.0%20L77.8,1365.0%20L85.0,1400.0%20L195.0,1400.0%20L187.8,1365.0%20L180.8,1330.0%20L174.1,1295.0%20L168.0,1260.0%20L162.5,1225.0%20L157.8,1190.0%20L154.0,1155.0%20L151.3,1120.0%20L149.6,1085.0%20L149.0,1050.0%20L149.6,1015.0%20L151.3,980.0%20L154.0,945.0%20L157.8,910.0%20L162.5,875.0%20L168.0,840.0%20L174.1,805.0%20L180.8,770.0%20L187.8,735.0%20L195.0,700.0%20L202.2,665.0%20L209.2,630.0%20L215.9,595.0%20L222.0,560.0%20L227.5,525.0%20L232.2,490.0%20L236.0,455.0%20L238.7,420.0%20L240.4,385.0%20L241.0,350.0%20L240.4,315.0%20L238.7,280.0%20L236.0,245.0%20L232.2,210.0%20L227.5,175.0%20L222.0,140.0%20L215.9,105.0%20L209.2,70.0%20L202.2,35.0%20L195.0,0.0%20Z%22%20fill=%22%23fff%22%20fill-opacity=%220.19%22/%3E%3Cpath%20d=%22M605.0,0.0%20L612.2,35.0%20L619.2,70.0%20L625.9,105.0%20L632.0,140.0%20L637.5,175.0%20L642.2,210.0%20L646.0,245.0%20L648.7,280.0%20L650.4,315.0%20L651.0,350.0%20L650.4,385.0%20L648.7,420.0%20L646.0,455.0%20L642.2,490.0%20L637.5,525.0%20L632.0,560.0%20L625.9,595.0%20L619.2,630.0%20L612.2,665.0%20L605.0,700.0%20L597.8,735.0%20L590.8,770.0%20L584.1,805.0%20L578.0,840.0%20L572.5,875.0%20L567.8,910.0%20L564.0,945.0%20L561.3,980.0%20L559.6,1015.0%20L559.0,1050.0%20L559.6,1085.0%20L561.3,1120.0%20L564.0,1155.0%20L567.8,1190.0%20L572.5,1225.0%20L578.0,1260.0%20L584.1,1295.0%20L590.8,1330.0%20L597.8,1365.0%20L605.0,1400.0%20L715.0,1400.0%20L707.8,1365.0%20L700.8,1330.0%20L694.1,1295.0%20L688.0,1260.0%20L682.5,1225.0%20L677.8,1190.0%20L674.0,1155.0%20L671.3,1120.0%20L669.6,1085.0%20L669.0,1050.0%20L669.6,1015.0%20L671.3,980.0%20L674.0,945.0%20L677.8,910.0%20L682.5,875.0%20L688.0,840.0%20L694.1,805.0%20L700.8,770.0%20L707.8,735.0%20L715.0,700.0%20L722.2,665.0%20L729.2,630.0%20L735.9,595.0%20L742.0,560.0%20L747.5,525.0%20L752.2,490.0%20L756.0,455.0%20L758.7,420.0%20L760.4,385.0%20L761.0,350.0%20L760.4,315.0%20L758.7,280.0%20L756.0,245.0%20L752.2,210.0%20L747.5,175.0%20L742.0,140.0%20L735.9,105.0%20L729.2,70.0%20L722.2,35.0%20L715.0,0.0%20Z%22%20fill=%22%23fff%22%20fill-opacity=%220.19%22/%3E%3Cpath%20d=%22M-175.0,0.0%20L-167.8,35.0%20L-160.8,70.0%20L-154.1,105.0%20L-148.0,140.0%20L-142.5,175.0%20L-137.8,210.0%20L-134.0,245.0%20L-131.3,280.0%20L-129.6,315.0%20L-129.0,350.0%20L-129.6,385.0%20L-131.3,420.0%20L-134.0,455.0%20L-137.8,490.0%20L-142.5,525.0%20L-148.0,560.0%20L-154.1,595.0%20L-160.8,630.0%20L-167.8,665.0%20L-175.0,700.0%20L-182.2,735.0%20L-189.2,770.0%20L-195.9,805.0%20L-202.0,840.0%20L-207.5,875.0%20L-212.2,910.0%20L-216.0,945.0%20L-218.7,980.0%20L-220.4,1015.0%20L-221.0,1050.0%20L-220.4,1085.0%20L-218.7,1120.0%20L-216.0,1155.0%20L-212.2,1190.0%20L-207.5,1225.0%20L-202.0,1260.0%20L-195.9,1295.0%20L-189.2,1330.0%20L-182.2,1365.0%20L-175.0,1400.0%20L-65.0,1400.0%20L-72.2,1365.0%20L-79.2,1330.0%20L-85.9,1295.0%20L-92.0,1260.0%20L-97.5,1225.0%20L-102.2,1190.0%20L-106.0,1155.0%20L-108.7,1120.0%20L-110.4,1085.0%20L-111.0,1050.0%20L-110.4,1015.0%20L-108.7,980.0%20L-106.0,945.0%20L-102.2,910.0%20L-97.5,875.0%20L-92.0,840.0%20L-85.9,805.0%20L-79.2,770.0%20L-72.2,735.0%20L-65.0,700.0%20L-57.8,665.0%20L-50.8,630.0%20L-44.1,595.0%20L-38.0,560.0%20L-32.5,525.0%20L-27.8,490.0%20L-24.0,455.0%20L-21.3,420.0%20L-19.6,385.0%20L-19.0,350.0%20L-19.6,315.0%20L-21.3,280.0%20L-24.0,245.0%20L-27.8,210.0%20L-32.5,175.0%20L-38.0,140.0%20L-44.1,105.0%20L-50.8,70.0%20L-57.8,35.0%20L-65.0,0.0%20Z%22%20fill=%22%235a1400%22%20fill-opacity=%220.13%22/%3E%3Cpath%20d=%22M345.0,0.0%20L352.2,35.0%20L359.2,70.0%20L365.9,105.0%20L372.0,140.0%20L377.5,175.0%20L382.2,210.0%20L386.0,245.0%20L388.7,280.0%20L390.4,315.0%20L391.0,350.0%20L390.4,385.0%20L388.7,420.0%20L386.0,455.0%20L382.2,490.0%20L377.5,525.0%20L372.0,560.0%20L365.9,595.0%20L359.2,630.0%20L352.2,665.0%20L345.0,700.0%20L337.8,735.0%20L330.8,770.0%20L324.1,805.0%20L318.0,840.0%20L312.5,875.0%20L307.8,910.0%20L304.0,945.0%20L301.3,980.0%20L299.6,1015.0%20L299.0,1050.0%20L299.6,1085.0%20L301.3,1120.0%20L304.0,1155.0%20L307.8,1190.0%20L312.5,1225.0%20L318.0,1260.0%20L324.1,1295.0%20L330.8,1330.0%20L337.8,1365.0%20L345.0,1400.0%20L455.0,1400.0%20L447.8,1365.0%20L440.8,1330.0%20L434.1,1295.0%20L428.0,1260.0%20L422.5,1225.0%20L417.8,1190.0%20L414.0,1155.0%20L411.3,1120.0%20L409.6,1085.0%20L409.0,1050.0%20L409.6,1015.0%20L411.3,980.0%20L414.0,945.0%20L417.8,910.0%20L422.5,875.0%20L428.0,840.0%20L434.1,805.0%20L440.8,770.0%20L447.8,735.0%20L455.0,700.0%20L462.2,665.0%20L469.2,630.0%20L475.9,595.0%20L482.0,560.0%20L487.5,525.0%20L492.2,490.0%20L496.0,455.0%20L498.7,420.0%20L500.4,385.0%20L501.0,350.0%20L500.4,315.0%20L498.7,280.0%20L496.0,245.0%20L492.2,210.0%20L487.5,175.0%20L482.0,140.0%20L475.9,105.0%20L469.2,70.0%20L462.2,35.0%20L455.0,0.0%20Z%22%20fill=%22%235a1400%22%20fill-opacity=%220.13%22/%3E%3Cpath%20d=%22M865.0,0.0%20L872.2,35.0%20L879.2,70.0%20L885.9,105.0%20L892.0,140.0%20L897.5,175.0%20L902.2,210.0%20L906.0,245.0%20L908.7,280.0%20L910.4,315.0%20L911.0,350.0%20L910.4,385.0%20L908.7,420.0%20L906.0,455.0%20L902.2,490.0%20L897.5,525.0%20L892.0,560.0%20L885.9,595.0%20L879.2,630.0%20L872.2,665.0%20L865.0,700.0%20L857.8,735.0%20L850.8,770.0%20L844.1,805.0%20L838.0,840.0%20L832.5,875.0%20L827.8,910.0%20L824.0,945.0%20L821.3,980.0%20L819.6,1015.0%20L819.0,1050.0%20L819.6,1085.0%20L821.3,1120.0%20L824.0,1155.0%20L827.8,1190.0%20L832.5,1225.0%20L838.0,1260.0%20L844.1,1295.0%20L850.8,1330.0%20L857.8,1365.0%20L865.0,1400.0%20L975.0,1400.0%20L967.8,1365.0%20L960.8,1330.0%20L954.1,1295.0%20L948.0,1260.0%20L942.5,1225.0%20L937.8,1190.0%20L934.0,1155.0%20L931.3,1120.0%20L929.6,1085.0%20L929.0,1050.0%20L929.6,1015.0%20L931.3,980.0%20L934.0,945.0%20L937.8,910.0%20L942.5,875.0%20L948.0,840.0%20L954.1,805.0%20L960.8,770.0%20L967.8,735.0%20L975.0,700.0%20L982.2,665.0%20L989.2,630.0%20L995.9,595.0%20L1002.0,560.0%20L1007.5,525.0%20L1012.2,490.0%20L1016.0,455.0%20L1018.7,420.0%20L1020.4,385.0%20L1021.0,350.0%20L1020.4,315.0%20L1018.7,280.0%20L1016.0,245.0%20L1012.2,210.0%20L1007.5,175.0%20L1002.0,140.0%20L995.9,105.0%20L989.2,70.0%20L982.2,35.0%20L975.0,0.0%20Z%22%20fill=%22%235a1400%22%20fill-opacity=%220.13%22/%3E%3C/g%3E%3C/svg%3E"); background-size: 520px 1400px; animation: flag-flow-a 16s linear infinite; }
.flag-bg i:nth-child(2) { width: calc(100% + 780px); height: calc(100% + 2000px); background-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22780%22%20height=%222000%22%20viewBox=%220%200%20780%202000%22%3E%3Cdefs%3E%3Cfilter%20id=%22b%22%20x=%22-50%25%22%20y=%22-10%25%22%20width=%22200%25%22%20height=%22120%25%22%3E%3CfeGaussianBlur%20stdDeviation=%2250%22/%3E%3C/filter%3E%3C/defs%3E%3Cg%20filter=%22url%28%23b%29%22%3E%3Cpath%20d=%22M-605.0,0.0%20L-594.0,50.0%20L-583.4,100.0%20L-573.2,150.0%20L-563.9,200.0%20L-555.5,250.0%20L-548.4,300.0%20L-542.6,350.0%20L-538.4,400.0%20L-535.9,450.0%20L-535.0,500.0%20L-535.9,550.0%20L-538.4,600.0%20L-542.6,650.0%20L-548.4,700.0%20L-555.5,750.0%20L-563.9,800.0%20L-573.2,850.0%20L-583.4,900.0%20L-594.0,950.0%20L-605.0,1000.0%20L-616.0,1050.0%20L-626.6,1100.0%20L-636.8,1150.0%20L-646.1,1200.0%20L-654.5,1250.0%20L-661.6,1300.0%20L-667.4,1350.0%20L-671.6,1400.0%20L-674.1,1450.0%20L-675.0,1500.0%20L-674.1,1550.0%20L-671.6,1600.0%20L-667.4,1650.0%20L-661.6,1700.0%20L-654.5,1750.0%20L-646.1,1800.0%20L-636.8,1850.0%20L-626.6,1900.0%20L-616.0,1950.0%20L-605.0,2000.0%20L-455.0,2000.0%20L-466.0,1950.0%20L-476.6,1900.0%20L-486.8,1850.0%20L-496.1,1800.0%20L-504.5,1750.0%20L-511.6,1700.0%20L-517.4,1650.0%20L-521.6,1600.0%20L-524.1,1550.0%20L-525.0,1500.0%20L-524.1,1450.0%20L-521.6,1400.0%20L-517.4,1350.0%20L-511.6,1300.0%20L-504.5,1250.0%20L-496.1,1200.0%20L-486.8,1150.0%20L-476.6,1100.0%20L-466.0,1050.0%20L-455.0,1000.0%20L-444.0,950.0%20L-433.4,900.0%20L-423.2,850.0%20L-413.9,800.0%20L-405.5,750.0%20L-398.4,700.0%20L-392.6,650.0%20L-388.4,600.0%20L-385.9,550.0%20L-385.0,500.0%20L-385.9,450.0%20L-388.4,400.0%20L-392.6,350.0%20L-398.4,300.0%20L-405.5,250.0%20L-413.9,200.0%20L-423.2,150.0%20L-433.4,100.0%20L-444.0,50.0%20L-455.0,0.0%20Z%22%20fill=%22%23fff%22%20fill-opacity=%220.12%22/%3E%3Cpath%20d=%22M175.0,0.0%20L186.0,50.0%20L196.6,100.0%20L206.8,150.0%20L216.1,200.0%20L224.5,250.0%20L231.6,300.0%20L237.4,350.0%20L241.6,400.0%20L244.1,450.0%20L245.0,500.0%20L244.1,550.0%20L241.6,600.0%20L237.4,650.0%20L231.6,700.0%20L224.5,750.0%20L216.1,800.0%20L206.8,850.0%20L196.6,900.0%20L186.0,950.0%20L175.0,1000.0%20L164.0,1050.0%20L153.4,1100.0%20L143.2,1150.0%20L133.9,1200.0%20L125.5,1250.0%20L118.4,1300.0%20L112.6,1350.0%20L108.4,1400.0%20L105.9,1450.0%20L105.0,1500.0%20L105.9,1550.0%20L108.4,1600.0%20L112.6,1650.0%20L118.4,1700.0%20L125.5,1750.0%20L133.9,1800.0%20L143.2,1850.0%20L153.4,1900.0%20L164.0,1950.0%20L175.0,2000.0%20L325.0,2000.0%20L314.0,1950.0%20L303.4,1900.0%20L293.2,1850.0%20L283.9,1800.0%20L275.5,1750.0%20L268.4,1700.0%20L262.6,1650.0%20L258.4,1600.0%20L255.9,1550.0%20L255.0,1500.0%20L255.9,1450.0%20L258.4,1400.0%20L262.6,1350.0%20L268.4,1300.0%20L275.5,1250.0%20L283.9,1200.0%20L293.2,1150.0%20L303.4,1100.0%20L314.0,1050.0%20L325.0,1000.0%20L336.0,950.0%20L346.6,900.0%20L356.8,850.0%20L366.1,800.0%20L374.5,750.0%20L381.6,700.0%20L387.4,650.0%20L391.6,600.0%20L394.1,550.0%20L395.0,500.0%20L394.1,450.0%20L391.6,400.0%20L387.4,350.0%20L381.6,300.0%20L374.5,250.0%20L366.1,200.0%20L356.8,150.0%20L346.6,100.0%20L336.0,50.0%20L325.0,0.0%20Z%22%20fill=%22%23fff%22%20fill-opacity=%220.12%22/%3E%3Cpath%20d=%22M955.0,0.0%20L966.0,50.0%20L976.6,100.0%20L986.8,150.0%20L996.1,200.0%20L1004.5,250.0%20L1011.6,300.0%20L1017.4,350.0%20L1021.6,400.0%20L1024.1,450.0%20L1025.0,500.0%20L1024.1,550.0%20L1021.6,600.0%20L1017.4,650.0%20L1011.6,700.0%20L1004.5,750.0%20L996.1,800.0%20L986.8,850.0%20L976.6,900.0%20L966.0,950.0%20L955.0,1000.0%20L944.0,1050.0%20L933.4,1100.0%20L923.2,1150.0%20L913.9,1200.0%20L905.5,1250.0%20L898.4,1300.0%20L892.6,1350.0%20L888.4,1400.0%20L885.9,1450.0%20L885.0,1500.0%20L885.9,1550.0%20L888.4,1600.0%20L892.6,1650.0%20L898.4,1700.0%20L905.5,1750.0%20L913.9,1800.0%20L923.2,1850.0%20L933.4,1900.0%20L944.0,1950.0%20L955.0,2000.0%20L1105.0,2000.0%20L1094.0,1950.0%20L1083.4,1900.0%20L1073.2,1850.0%20L1063.9,1800.0%20L1055.5,1750.0%20L1048.4,1700.0%20L1042.6,1650.0%20L1038.4,1600.0%20L1035.9,1550.0%20L1035.0,1500.0%20L1035.9,1450.0%20L1038.4,1400.0%20L1042.6,1350.0%20L1048.4,1300.0%20L1055.5,1250.0%20L1063.9,1200.0%20L1073.2,1150.0%20L1083.4,1100.0%20L1094.0,1050.0%20L1105.0,1000.0%20L1116.0,950.0%20L1126.6,900.0%20L1136.8,850.0%20L1146.1,800.0%20L1154.5,750.0%20L1161.6,700.0%20L1167.4,650.0%20L1171.6,600.0%20L1174.1,550.0%20L1175.0,500.0%20L1174.1,450.0%20L1171.6,400.0%20L1167.4,350.0%20L1161.6,300.0%20L1154.5,250.0%20L1146.1,200.0%20L1136.8,150.0%20L1126.6,100.0%20L1116.0,50.0%20L1105.0,0.0%20Z%22%20fill=%22%23fff%22%20fill-opacity=%220.12%22/%3E%3Cpath%20d=%22M-245.0,0.0%20L-234.0,50.0%20L-223.4,100.0%20L-213.2,150.0%20L-203.9,200.0%20L-195.5,250.0%20L-188.4,300.0%20L-182.6,350.0%20L-178.4,400.0%20L-175.9,450.0%20L-175.0,500.0%20L-175.9,550.0%20L-178.4,600.0%20L-182.6,650.0%20L-188.4,700.0%20L-195.5,750.0%20L-203.9,800.0%20L-213.2,850.0%20L-223.4,900.0%20L-234.0,950.0%20L-245.0,1000.0%20L-256.0,1050.0%20L-266.6,1100.0%20L-276.8,1150.0%20L-286.1,1200.0%20L-294.5,1250.0%20L-301.6,1300.0%20L-307.4,1350.0%20L-311.6,1400.0%20L-314.1,1450.0%20L-315.0,1500.0%20L-314.1,1550.0%20L-311.6,1600.0%20L-307.4,1650.0%20L-301.6,1700.0%20L-294.5,1750.0%20L-286.1,1800.0%20L-276.8,1850.0%20L-266.6,1900.0%20L-256.0,1950.0%20L-245.0,2000.0%20L-95.0,2000.0%20L-106.0,1950.0%20L-116.6,1900.0%20L-126.8,1850.0%20L-136.1,1800.0%20L-144.5,1750.0%20L-151.6,1700.0%20L-157.4,1650.0%20L-161.6,1600.0%20L-164.1,1550.0%20L-165.0,1500.0%20L-164.1,1450.0%20L-161.6,1400.0%20L-157.4,1350.0%20L-151.6,1300.0%20L-144.5,1250.0%20L-136.1,1200.0%20L-126.8,1150.0%20L-116.6,1100.0%20L-106.0,1050.0%20L-95.0,1000.0%20L-84.0,950.0%20L-73.4,900.0%20L-63.2,850.0%20L-53.9,800.0%20L-45.5,750.0%20L-38.4,700.0%20L-32.6,650.0%20L-28.4,600.0%20L-25.9,550.0%20L-25.0,500.0%20L-25.9,450.0%20L-28.4,400.0%20L-32.6,350.0%20L-38.4,300.0%20L-45.5,250.0%20L-53.9,200.0%20L-63.2,150.0%20L-73.4,100.0%20L-84.0,50.0%20L-95.0,0.0%20Z%22%20fill=%22%235a1400%22%20fill-opacity=%220.09%22/%3E%3Cpath%20d=%22M535.0,0.0%20L546.0,50.0%20L556.6,100.0%20L566.8,150.0%20L576.1,200.0%20L584.5,250.0%20L591.6,300.0%20L597.4,350.0%20L601.6,400.0%20L604.1,450.0%20L605.0,500.0%20L604.1,550.0%20L601.6,600.0%20L597.4,650.0%20L591.6,700.0%20L584.5,750.0%20L576.1,800.0%20L566.8,850.0%20L556.6,900.0%20L546.0,950.0%20L535.0,1000.0%20L524.0,1050.0%20L513.4,1100.0%20L503.2,1150.0%20L493.9,1200.0%20L485.5,1250.0%20L478.4,1300.0%20L472.6,1350.0%20L468.4,1400.0%20L465.9,1450.0%20L465.0,1500.0%20L465.9,1550.0%20L468.4,1600.0%20L472.6,1650.0%20L478.4,1700.0%20L485.5,1750.0%20L493.9,1800.0%20L503.2,1850.0%20L513.4,1900.0%20L524.0,1950.0%20L535.0,2000.0%20L685.0,2000.0%20L674.0,1950.0%20L663.4,1900.0%20L653.2,1850.0%20L643.9,1800.0%20L635.5,1750.0%20L628.4,1700.0%20L622.6,1650.0%20L618.4,1600.0%20L615.9,1550.0%20L615.0,1500.0%20L615.9,1450.0%20L618.4,1400.0%20L622.6,1350.0%20L628.4,1300.0%20L635.5,1250.0%20L643.9,1200.0%20L653.2,1150.0%20L663.4,1100.0%20L674.0,1050.0%20L685.0,1000.0%20L696.0,950.0%20L706.6,900.0%20L716.8,850.0%20L726.1,800.0%20L734.5,750.0%20L741.6,700.0%20L747.4,650.0%20L751.6,600.0%20L754.1,550.0%20L755.0,500.0%20L754.1,450.0%20L751.6,400.0%20L747.4,350.0%20L741.6,300.0%20L734.5,250.0%20L726.1,200.0%20L716.8,150.0%20L706.6,100.0%20L696.0,50.0%20L685.0,0.0%20Z%22%20fill=%22%235a1400%22%20fill-opacity=%220.09%22/%3E%3Cpath%20d=%22M1315.0,0.0%20L1326.0,50.0%20L1336.6,100.0%20L1346.8,150.0%20L1356.1,200.0%20L1364.5,250.0%20L1371.6,300.0%20L1377.4,350.0%20L1381.6,400.0%20L1384.1,450.0%20L1385.0,500.0%20L1384.1,550.0%20L1381.6,600.0%20L1377.4,650.0%20L1371.6,700.0%20L1364.5,750.0%20L1356.1,800.0%20L1346.8,850.0%20L1336.6,900.0%20L1326.0,950.0%20L1315.0,1000.0%20L1304.0,1050.0%20L1293.4,1100.0%20L1283.2,1150.0%20L1273.9,1200.0%20L1265.5,1250.0%20L1258.4,1300.0%20L1252.6,1350.0%20L1248.4,1400.0%20L1245.9,1450.0%20L1245.0,1500.0%20L1245.9,1550.0%20L1248.4,1600.0%20L1252.6,1650.0%20L1258.4,1700.0%20L1265.5,1750.0%20L1273.9,1800.0%20L1283.2,1850.0%20L1293.4,1900.0%20L1304.0,1950.0%20L1315.0,2000.0%20L1465.0,2000.0%20L1454.0,1950.0%20L1443.4,1900.0%20L1433.2,1850.0%20L1423.9,1800.0%20L1415.5,1750.0%20L1408.4,1700.0%20L1402.6,1650.0%20L1398.4,1600.0%20L1395.9,1550.0%20L1395.0,1500.0%20L1395.9,1450.0%20L1398.4,1400.0%20L1402.6,1350.0%20L1408.4,1300.0%20L1415.5,1250.0%20L1423.9,1200.0%20L1433.2,1150.0%20L1443.4,1100.0%20L1454.0,1050.0%20L1465.0,1000.0%20L1476.0,950.0%20L1486.6,900.0%20L1496.8,850.0%20L1506.1,800.0%20L1514.5,750.0%20L1521.6,700.0%20L1527.4,650.0%20L1531.6,600.0%20L1534.1,550.0%20L1535.0,500.0%20L1534.1,450.0%20L1531.6,400.0%20L1527.4,350.0%20L1521.6,300.0%20L1514.5,250.0%20L1506.1,200.0%20L1496.8,150.0%20L1486.6,100.0%20L1476.0,50.0%20L1465.0,0.0%20Z%22%20fill=%22%235a1400%22%20fill-opacity=%220.09%22/%3E%3C/g%3E%3C/svg%3E"); background-size: 780px 2000px; animation: flag-flow-b 27s linear infinite; }
@keyframes flag-flow-a { from { transform: translate(0, 0); } to { transform: translate(-520px, -1400px); } }
@keyframes flag-flow-b { from { transform: translate(-780px, 0); } to { transform: translate(0, -2000px); } }
.flag-bg.gl { display: block; height: 100%; height: 100dvh; background: var(--orange); animation: none; }
@keyframes flag-breathe { from { opacity: .8; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .flag-bg, .flag-bg i { animation: none !important; } }

/* 電腦與平板：整站維持手機版型，置中顯示 */
@media (min-width: 600px) {
  html { background: #15171c; }
  body { width: 430px; max-width: 430px; margin: 0 auto; box-shadow: 0 0 0 3px #000, 0 30px 80px rgba(0, 0, 0, .5); }
  .flag-bg { width: 430px; }
}

/* 一天裡的停靠時段：洋流雷達與未來航線共用 */
.slots { margin: 0; padding: 0; list-style: none; }
.slot { position: relative; display: grid; grid-template-columns: 22px 1fr; column-gap: 12px; padding: 7px 0; }
.slot:not(:last-child)::before { content: ""; position: absolute; left: 10px; top: 32px; bottom: -7px; width: 2px; background: rgba(21, 23, 28, .3); }
.slot .mark { grid-row: 1 / 3; width: 22px; height: 22px; border-radius: 50%; background: var(--ink); color: var(--cream); font-size: 11px; font-weight: 800; line-height: 22px; text-align: center; }
.slot .when { font-size: 16px; font-weight: 800; letter-spacing: .03em; font-variant-numeric: tabular-nums; }
.slot .where { font-size: 13px; line-height: 1.4; opacity: .8; }
.slot .state { margin-left: 8px; padding: 2px 8px; border-radius: 999px; font-size: 11px; font-weight: 800; letter-spacing: .06em; vertical-align: 2px; }
.slot.now .mark { background: var(--orange); box-shadow: 0 0 0 3px rgba(234, 97, 29, .35); }
.slot.now .state { background: var(--orange); color: var(--cream); }
.slot.past { opacity: .5; }
.slot.past .state { background: rgba(21, 23, 28, .15); }

/* 等伺服器回答身分時的載入畫面：0.25 秒內回來就完全看不到（延遲淡入），免得閃一下 */
.loading { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 56px 0; font-size: 14px; font-weight: 700; letter-spacing: .08em; animation: loading-in .3s .25s both; }
.loading[hidden] { display: none; }
.loading img { width: 120px; height: auto; animation: loading-bob 1.6s ease-in-out infinite alternate; }
@keyframes loading-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes loading-bob { from { transform: translateY(-4px) rotate(-5deg); } to { transform: translateY(5px) rotate(4deg); } }
@media (prefers-reduced-motion: reduce) { .loading img { animation: none; } }
