@import url('./tokens.css');
@import url('./assets/fonts/noto-sans-tc.css');
:root{--header:64px;--nav:76px;--rail:88px;--ink:#f4f7fc;--muted:#b6c6da;--cream:#122034;--green:#347fe9;--mint:#ffffff12;--line:#ffffff24;--glass:rgba(33,49,69,.68);--card:rgba(255,255,255,.075);--shadow:0 16px 50px #06121d38;--j-panel:var(--glass);--j-line:var(--line);--j-text:var(--ink);--j-muted:var(--muted);--j-blue:var(--green);--j-shadow:var(--shadow);color-scheme:dark}
*{box-sizing:border-box}html{min-height:100%;background:#122034}body{margin:0;font-family:Inter,"SF Pro Display","Noto Sans TC Variable","Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;color:var(--ink);font-size:16px;line-height:1.55;background:radial-gradient(ellipse at 90% 10%,#35536b 0,transparent 55%),#122034}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 15px;background:var(--card);border:1px solid var(--line);border-radius:14px;color:var(--ink);cursor:pointer;transition:background .18s,transform .18s}button:hover{background:#ffffff16}button:active{transform:translateY(1px) scale(.985)}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #ffd68a;outline-offset:3px}a{color:#a8d3ff;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{line-height:1.35;margin:0 0 12px;font-weight:650;letter-spacing:-.035em}h1{font-size:28px}h2{font-size:23px}h3{font-size:18px}p{margin:10px 0;color:var(--muted);overflow-wrap:anywhere}small{font-size:12px}input,select,textarea{min-height:44px;background:#0d1c2f80;border:1px solid var(--line);border-radius:12px;padding:10px 12px;color:var(--ink);max-width:100%;width:100%;font-size:16px}input[type=checkbox]{width:20px;min-height:20px;height:20px;accent-color:var(--green);margin-right:8px}input[type=range]{padding:0;accent-color:#79baff;min-height:30px}label{display:block;color:var(--muted)}summary{min-height:44px;cursor:pointer;padding:12px 0;color:var(--ink)}details>summary::marker{color:#91a9c3}[hidden]{display:none!important}.primary{background:linear-gradient(145deg,#4b94fa,#2866cf);color:#fff;border:1px solid #90bdf955;box-shadow:0 4px 14px #1756b730}.primary:hover{background:#498aec}.full{width:100%;margin-top:12px}.ui-icon{height:22px;width:22px;flex-shrink:0;vertical-align:middle}.icon-button{padding:10px;min-width:44px}.eyebrow{display:block;font-size:10px;letter-spacing:2.3px;font-weight:700;color:#a7bdd7;text-transform:uppercase}.quiet-note,.data-note,.inline-note{font-size:12px;line-height:1.65;color:var(--muted)}.muted{color:var(--muted)}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.section-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.section-row h2,.section-row h3{margin:4px 0 0}.glass-card{background:var(--glass);border:1px solid var(--line);border-radius:24px;backdrop-filter:blur(22px) saturate(1.2);-webkit-backdrop-filter:blur(22px) saturate(1.2);box-shadow:var(--shadow);padding:22px}.state-pill{display:inline-flex;align-items:center;padding:3px 9px;background:#89caed13;color:#b2d5ed;font-size:11px;border-radius:9px;border:1px solid #acd8ff18}.text-button{background:none;border:0;color:#acd3ff;padding-left:0}.content-page{max-width:1200px;margin:auto;padding:32px 24px 110px}.topbar{height:var(--header);padding:12px 20px;display:flex;align-items:center;justify-content:space-between;background:#132339e8;backdrop-filter:blur(22px);border-bottom:1px solid #ffffff12;position:relative;z-index:30}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none}.brand strong{font-size:20px;letter-spacing:-.4px}.brand-symbol{display:grid;place-items:center;width:34px;height:34px;background:linear-gradient(145deg,#66c8d3,#327cb4);border-radius:12px;color:white;font-size:24px;box-shadow:inset 0 1px 0 #ffffff55}.brand-label{font-size:11px;color:#adc0d8}.navigation{position:fixed;left:0;right:0;bottom:0;height:calc(var(--nav) + env(safe-area-inset-bottom));display:flex;padding:7px 12px calc(7px + env(safe-area-inset-bottom));background:#162940d9;backdrop-filter:blur(24px);border-top:1px solid var(--line);z-index:40;gap:8px}.navigation button{display:flex;flex:1;flex-direction:column;gap:5px;padding:6px 4px;border:0;background:none;color:#8ea4be;font-size:11px;border-radius:18px}.navigation button.active{color:#94d7ff;background:#93bcf912}.navigation button .ui-icon{width:23px;height:23px}.navigation button::before{display:none}main{min-width:0}#toast{display:none;position:fixed;left:50%;bottom:calc(var(--nav) + env(safe-area-inset-bottom) + 20px);transform:translateX(-50%);background:#132439f5;color:#fff;border:1px solid var(--line);border-radius:16px;padding:12px 20px;z-index:110;max-width:calc(100vw - 28px);width:max-content;box-shadow:var(--shadow);font-size:14px}#toast.show{display:block}.offline-banner{position:fixed;top:0;left:0;right:0;z-index:100;background:#8b4f16f0;padding:10px;color:white;font-size:13px;text-align:center}
/* MY WORLD: globe stays visible, memories remain easy to reach. */
.profile-world.product-world{position:relative;min-height:calc(100dvh - var(--header));padding:330px 14px calc(var(--nav) + env(safe-area-inset-bottom) + 28px);background:radial-gradient(ellipse at 50% 0,#2d5774,#102033 50%);overflow:hidden}.product-world #globe{position:absolute;top:0;left:0;right:0;height:410px;visibility:visible}.globe-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:14px;color:#b3cce1;font-size:13px;background:radial-gradient(circle at center,#3c6688,#142237 62%)}.globe-loading>.ui-icon{width:90px;height:90px}.product-world .world-title{position:absolute;z-index:2;left:22px;top:20px;pointer-events:none}.world-title h1{font-size:24px;margin:12px 0;text-shadow:0 3px 16px #0b182ccc}.world-actions{display:flex;gap:6px;pointer-events:auto}.world-actions button{min-height:34px;font-size:11px;background:#16293eb8;padding:6px 12px}.world-note{position:absolute;top:307px;left:22px;right:22px;font-size:10px;color:#bdd2e5;z-index:2;pointer-events:none}.weather-bubble{position:absolute;top:30px;right:18px;z-index:2;display:none;padding:12px;background:var(--glass);border-radius:18px;font-size:11px}.weather-bubble strong{display:block;font-size:26px}.product-world .profile-sheet{position:relative;z-index:3;max-width:1100px;margin:auto;width:100%;inset:auto;padding:22px 20px;background:var(--glass);border:1px solid var(--line);border-radius:28px;box-shadow:var(--shadow);backdrop-filter:blur(24px);max-height:none;overflow:visible;transform:none}.world-profile-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.world-profile-heading h2{font-size:23px;margin:7px 0 0}.world-account{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0 18px;font-size:11px;color:var(--muted)}.world-account button{font-size:11px;min-height:34px;padding:5px 10px}.world-quick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:22px}.world-quick button{display:flex;flex-direction:column;gap:4px;background:#e1effa09;border-radius:18px;padding:14px 6px;min-width:0}.world-quick button>.ui-icon{width:20px;height:20px;color:#aed5f2}.world-quick strong{font-size:22px;font-weight:600}.world-quick span{font-size:11px;color:var(--muted)}.preference-card{padding:18px 16px;border-radius:20px;box-shadow:none;background:#0b1d342b}.preference-card .section-row{margin-bottom:20px}.preference-card h3{font-size:16px}.preference-card .section-row button{font-size:11px;min-height:34px;padding:6px 10px}.preference-card .eyebrow{font-size:8px;letter-spacing:1.6px}.axis-summary{display:flex;align-items:center;gap:12px;margin:14px 0;font-size:12px}.axis-summary>span{width:30px;flex-shrink:0}.axis-track{height:4px;flex:1;position:relative;background:linear-gradient(90deg,#6be0d7,#9d9cdd,#ffaeab);border-radius:4px;opacity:.9}.axis-track i{position:absolute;top:50%;width:12px;height:12px;border:2px solid white;border-radius:50%;background:#c3d0e0;transform:translate(-50%,-50%);box-shadow:0 1px 4px #0005}.preference-card .quiet-note{font-size:10px}.world-memory{margin-top:22px}.world-memory h3{font-size:17px}.world-memory .section-row button{min-height:34px;font-size:11px;padding:6px 10px}.memory-strip{display:flex;gap:10px;overflow-x:auto}.memory-image{padding:0;min-width:115px;position:relative;height:115px;overflow:hidden;border-radius:16px}.memory-image img{height:100%;width:115px;object-fit:cover}.memory-image>span{position:absolute;left:0;right:0;bottom:0;z-index:1;background:#0c1e3cbd;color:white;padding:5px;font-size:10px}.empty-memory{padding:18px;width:100%;border:1px dashed var(--line);border-radius:16px;font-size:12px;color:var(--muted)}.world-shortcuts{margin-top:24px;display:grid;gap:8px}.world-shortcuts>button{justify-content:flex-start;text-align:left;padding:14px;border-radius:16px}.world-shortcuts>button>span{display:grid;gap:3px;flex:1}.world-shortcuts strong{font-size:13px;font-weight:600}.world-shortcuts small{font-size:10px;color:var(--muted)}.world-shortcuts>button>.ui-icon:first-child{margin-right:6px;color:#acd2ee}.personal-footer:empty{display:none}.flag-marker{color:#ffc785;font-size:23px;filter:drop-shadow(0 1px 3px #132f4f)}
/* Shared dialogs and domain editors. */
html:has(dialog[open]){overflow:hidden}
dialog{width:min(520px,calc(100vw - 24px));padding:32px 22px 24px;border:1px solid var(--line);border-radius:26px;max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain;background:rgba(29,45,65,.96);color:var(--ink);box-shadow:0 24px 100px #08131d88;backdrop-filter:blur(22px)}dialog::backdrop{background:#0716248c;backdrop-filter:blur(5px)}dialog>h2{margin:14px 0 16px;font-size:25px}dialog>p{font-size:14px}dialog .eyebrow{padding-right:35px}dialog .close-dialog,.modal-close{position:absolute;right:12px;top:12px;min-height:36px;min-width:36px;padding:4px;font-size:24px;line-height:1;border:0;background:none}.form-label{margin:16px 0;font-size:13px}.form-label input,.form-label select,.form-label textarea{margin-top:7px}.form-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.list-row{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--line)}.list-row>div{min-width:0}.list-row strong{font-size:14px}.list-row p{font-size:12px;margin:5px 0}.list-row button{font-size:12px;flex-shrink:0}.panel{padding:20px;background:var(--card);border:1px solid var(--line);border-radius:18px;margin:16px 0}.panel h2{font-size:20px}.panel p{font-size:13px}.preference-row{margin:18px 0}.preference-row>span{display:flex;justify-content:space-between;font-size:14px;margin-bottom:10px}.preference-row output,.preference-row b{font-weight:400;color:#9abcde;font-size:12px}.preference-row input[type=range]{direction:rtl}.settings-list{display:grid;gap:8px;margin:20px 0}.settings-list>button,.settings-list>a{justify-content:flex-start;text-align:left;border-radius:12px;padding:12px 14px}.settings-list>a{border:1px solid var(--line)}.login-button{display:flex;justify-content:center;text-decoration:none;padding:14px;border-radius:14px}.service-unavailable{padding:16px;background:#ffffff08;border:1px dashed var(--line);border-radius:16px;color:var(--muted)}.location-search{display:flex;gap:8px}.location-search input{min-width:0}.location-search button{flex-shrink:0}#location-results button,#network-results-from button,#network-results-to button{display:block;text-align:left;width:100%;margin:8px 0;font-size:13px}.location-search+div{margin:16px 0}#network-status,#location-status,#profile-error{color:#ffe0a7;font-size:13px}.route-option{padding:18px;border:1px solid #7ab7ff66;border-radius:20px;background:#77a3df14;margin:16px 0}.route-option>strong{display:block;font-size:25px}.route-option dl{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:13px}.route-option dt{color:var(--muted)}.route-option dd{margin:0;text-align:right}.route-option p{font-size:12px}.photo-upload{border:1px dashed var(--line);border-radius:16px;padding:16px}.photo-upload input{margin-top:10px}#memory-preview,.memory-detail{display:block;max-width:100%;max-height:300px;border-radius:16px;margin:16px auto;object-fit:contain}.receipt-upload{display:block;padding:16px;border:1px dashed var(--line);border-radius:16px}#receipt-preview{max-width:100%;max-height:160px;border-radius:12px}.budget-meter{height:6px;border-radius:6px;background:#fff2;overflow:hidden}.budget-meter i{display:block;height:100%;background:#80d2d7}.stop-comparison{display:flex;gap:12px}.template-output{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;max-height:300px;overflow:auto}.profile-field{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:16px 0}.profile-field>label{display:flex;align-items:center;min-width:100%;font-size:13px}.profile-field input[type=number],.profile-field select{flex:1;min-width:100px}.profile-field>span{font-size:12px}.profile-field input[type=checkbox]{min-width:20px}.reminder-list label{font-size:13px}.empty-state{padding:28px;text-align:center;border:1px dashed var(--line);border-radius:20px}.source-time{font-size:11px;color:var(--muted)}.template-map svg{width:100%;height:auto}.source-note{margin-top:18px}body[data-view=partner] .content-page{max-width:1000px}.partner-capabilities{display:grid;grid-template-columns:1fr;gap:14px;margin:24px 0}.partner-capabilities article{padding:22px;border:1px solid var(--line);border-radius:20px;background:var(--glass)}.partner-capabilities h2{font-size:18px}.partner-capabilities p{font-size:14px}#activity-map{height:300px;border-radius:16px;margin:16px 0}.drawing-tools{display:flex;gap:6px;flex-wrap:wrap}.profile-record{font-size:13px}.profile-record small{display:block}.profile-record button{font-size:11px;margin:4px}.profile-reason{font-size:12px}.profile-field-advanced{border-top:1px solid var(--line);margin-top:20px}
.journey-solid{--glass:rgba(31,48,67,.98)}.journey-solid .glass-card,.journey-solid .sheet,.journey-solid .profile-sheet{backdrop-filter:none}
@keyframes drift{to{transform:translateX(65px)}}@keyframes pulse{50%{opacity:.3;transform:scale(.8)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(prefers-reduced-transparency:reduce){:root{--glass:rgba(31,48,67,.97)}}
@media(min-width:768px){.product-world .profile-sheet{padding:30px}.product-world .world-title{left:36px;top:30px}.world-title h1{font-size:32px}.world-quick{max-width:550px}.product-world .weather-bubble{display:block}.preference-card{max-width:550px}.world-shortcuts{grid-template-columns:repeat(3,minmax(0,1fr))}.partner-capabilities{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(min-width:1000px){.navigation{top:var(--header);right:auto;width:var(--rail);bottom:0;height:auto;flex-direction:column;padding:22px 8px;border-top:0;border-right:1px solid var(--line);background:#122339d9}.navigation button{flex:0 0 auto;min-height:76px;font-size:10px;gap:8px}.navigation button.active{background:#9fc6f414}main{margin-left:var(--rail)}.topbar{padding-left:24px}.brand-label{display:block}#toast{bottom:24px}.product-world{padding-top:440px}.profile-world.product-world{padding:440px 36px 40px}.product-world #globe{height:530px}.product-world .world-title{left:48px;top:36px}.world-title h1{font-size:38px}.world-note{top:410px;left:48px}.product-world .profile-sheet{display:grid;grid-template-columns:1fr 1fr;gap:24px 32px;max-width:1060px;padding:30px}.world-profile-heading,.world-account,.world-quick{grid-column:1/-1}.world-account{padding:0}.world-quick{margin-bottom:0}.preference-card{grid-column:1;grid-row:4/6;max-width:none}.world-memory{grid-column:2;grid-row:4;margin:0}.world-shortcuts{grid-column:2;grid-row:5;grid-template-columns:1fr;margin:0}.weather-bubble{top:36px;right:36px}.personal-footer{grid-column:1/-1}}
@media(max-height:720px){}
.private-events{grid-column:1;margin-top:0}.private-events h2{font-size:18px;margin-top:12px}.private-events p{font-size:13px}.private-events a{display:block;font-size:12px;margin-top:12px}.product-world #globe canvas{filter:drop-shadow(0 0 16px #74b8dd18)}
@media(min-width:1000px){}
