:root{color-scheme:dark;--bg:#0d1116;--bg2:#131a22;--panel:#1b232c;--panel2:#161d25;--gold:#dfbd7d;--gold-bright:#ffe1a3;--gold-muted:#aa8955;--ink:#f6eee0;--muted:#b7b7b6;--line:rgba(221,187,124,.23);--accent:#49acb3;--header:56px;--tabs:72px;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink)}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top right,#1b2631 0,transparent 35%),linear-gradient(#0d141b 0,#0d1116 900px);min-height:100svh;-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer;font-weight:600}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--gold-bright);outline-offset:3px}.hidden{display:none!important}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}.icon{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;display:inline-block;flex-shrink:0;vertical-align:middle}.icon.inline{width:21px;height:21px;color:var(--gold);margin-right:7px}.icon.small{height:17px;width:17px}.icon.tiny{width:12px;height:12px}
.app-shell{margin:auto;max-width:840px;min-height:100vh;overflow-x:clip}.topbar{height:var(--header);display:flex;justify-content:space-between;align-items:center;padding:7px 19px;background:rgba(11,16,23,.88);border-bottom:1px solid rgba(217,187,125,.18);gap:12px}.wordmark{display:flex;align-items:center;gap:11px;min-width:0;color:var(--gold-bright);font-size:12px;letter-spacing:.16em;font-weight:800;white-space:nowrap}.wordmark img{border-radius:10px;border:1px solid rgba(228,187,110,.4)}.sub-wordmark{font-weight:600;color:#ddc397}.top-private{display:inline-flex;align-items:center;gap:5px;color:#bea777;font-size:9px;letter-spacing:.13em;font-weight:800;border:1px solid var(--line);padding:5px 7px;border-radius:20px}
#app-main{padding:0 16px calc(var(--tabs) + 54px + env(safe-area-inset-bottom))}.page{animation:fade-in .23s ease}@keyframes fade-in{from{opacity:.5;transform:translateY(3px)}to{opacity:1;transform:none}}.sr-alert{position:fixed;left:50%;transform:translateX(-50%) translateY(-12px);top:calc(62px + env(safe-area-inset-top));z-index:60;max-width:min(88vw,540px);width:max-content;background:#253441;color:#f8ecce;border:1px solid var(--gold-muted);border-radius:12px;padding:10px 13px;box-shadow:0 12px 30px #0008;font-size:13px;opacity:0;pointer-events:none;transition:.2s}.sr-alert.active{opacity:1;transform:translateX(-50%) translateY(0)}
.home-intro{text-align:center;padding:32px 2px 20px}.kicker{font-size:10px;line-height:1.5;letter-spacing:.22em;color:#edc886;text-transform:uppercase;margin:0 0 14px;font-weight:600}.kicker span{margin:0 3px;color:#9ca1a6}.overline{color:#cbb689;font-size:10px;letter-spacing:.25em;text-transform:uppercase;font-weight:650;margin:0 0 9px}.home-intro h1{margin:0 auto;color:#f5ddb1;font-family:Georgia,"Times New Roman",serif;font-size:clamp(30px,8vw,49px);font-weight:700;font-style:italic;line-height:1.07;letter-spacing:-.025em;text-shadow:0 2px 18px #e5a84d24,0 0 22px #b9833a1a}.filigree{display:flex;align-items:center;justify-content:center;gap:10px;margin:15px auto 10px;color:var(--gold);max-width:190px}.filigree span{height:1px;flex:1;background:linear-gradient(90deg,transparent,#cda265)}.filigree span:last-child{transform:scaleX(-1)}.filigree .icon{width:18px;height:18px}.tagline{font-family:Georgia,"Times New Roman",serif;font-style:italic;color:var(--gold);font-size:clamp(18px,5.7vw,26px);line-height:1.3;margin:0 0 8px}.intro-copy{color:#e2d8c5;font-size:13px;line-height:1.55;margin:0 auto;max-width:420px}
.hero-art{position:relative;overflow:hidden;border:1px solid rgba(230,191,120,.6);border-radius:20px;height:clamp(240px,60vw,430px);background:#182332;box-shadow:0 6px 36px #0008,0 0 0 2px #352b1c33}.hero-art>img{width:100%;height:100%;object-fit:cover;object-position:center 51%;display:block}.hero-art:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 65%,#0a0d14dd 100%);pointer-events:none}.hero-ribbon{position:absolute;bottom:13px;left:0;right:0;z-index:1;display:flex;align-items:center;justify-content:center;gap:12px;color:#ffe0a8;font-size:9px;letter-spacing:.18em;font-weight:650;text-shadow:0 1px 5px black}.hero-ribbon .icon{width:14px;height:14px}
.voyage-strip{display:flex;justify-content:space-between;align-items:center;gap:9px;font-size:10px;letter-spacing:.06em;color:#dbd4c6;padding:13px 3px 21px;border-bottom:1px solid var(--line)}.voyage-strip>span{display:flex;align-items:center;gap:7px}.voyage-strip .icon{width:18px;height:18px;color:var(--gold)}#countdown{color:var(--gold-bright);font-weight:700;text-align:right}
.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin:21px 0 31px}.quick-card{background:linear-gradient(145deg,#24221f,#14191f 63%);color:var(--ink);border:1px solid #a88a5f;border-radius:14px;min-width:0;min-height:114px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:12px 4px;box-shadow:inset 0 0 0 1px #d7b06c15,0 7px 12px #05080b55}.quick-card .icon{color:#e9c27b;width:29px;height:29px;margin-bottom:9px}.quick-card strong{font-size:10px;letter-spacing:.14em;color:#f4dcac}.quick-card span{font-size:9px;line-height:1.25;color:#c9c5bf;margin-top:4px;max-width:94%}.quick-card:active,.routeitem:active{transform:scale(.98)}
.home-section{margin-top:24px}.section-header{display:flex;justify-content:space-between;align-items:end;gap:8px;margin:0 0 12px}.section-kicker{font-size:9px;text-transform:uppercase;letter-spacing:.21em;color:#b89b65;margin:0 0 5px;font-weight:700}.section-header h2,.page-top h2{font-family:Georgia,"Times New Roman",serif;color:#f9e6c2;font-size:25px;font-weight:600;line-height:1.22;margin:0}.text-link{display:flex;gap:3px;align-items:center;white-space:nowrap;color:#dfbd7d;background:transparent;border:0;font-size:12px;padding:6px 0}.map-preview{width:100%;display:block;background:#152435;border:1px solid #b49360;border-radius:18px;overflow:hidden;padding:0;text-align:left;position:relative;box-shadow:0 5px 16px #0008}.map-preview img{width:100%;height:260px;object-fit:cover;display:block}.map-preview>span{position:absolute;right:13px;bottom:12px;color:#f4dcaa;background:#0c1522d6;border:1px solid #91774dbb;display:flex;align-items:center;gap:3px;padding:7px 9px;border-radius:9px;font-size:10px;letter-spacing:.12em}.hint{font-size:12px;color:#aebac1;line-height:1.6}.route-list{margin:13px 0}.routeitem,.dayitem{width:100%;display:flex;gap:12px;align-items:center;text-align:left;padding:12px 12px;margin:7px 0;background:linear-gradient(115deg,#1d2730,#171d24);border:1px solid #47505a;border-radius:11px;color:#ede8dd;font-size:13px;min-height:55px}.route-num{color:var(--gold-bright);font-family:Georgia,serif;font-weight:bold;font-size:18px;min-width:32px}.route-copy{display:flex;flex-direction:column;gap:1px;flex:1}.route-copy small{font-size:10px;color:#b4c0c7}.routeitem>.icon{width:17px;height:17px;color:var(--gold);opacity:.75}.routeitem.sea-day{border-style:dashed;border-color:#536674}.routeitem.sea-day .route-num{color:#a5b8bd}.collage{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;min-height:106px}.collage img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;cursor:pointer}.empty{padding:21px;background:linear-gradient(120deg,#1c2935,#121c26);border:1px dashed #776b55;border-radius:14px;color:#b4bfc6;text-align:center;grid-column:1/-1;font-size:13px;line-height:1.55}.home-last{text-align:center;padding:22px 9px 7px;margin-top:28px;border-top:1px solid var(--line);color:var(--gold)}.home-last>.icon{width:29px;height:29px}.home-last p{font-family:Georgia,serif;font-style:italic;color:#e2d4ba;line-height:1.6;font-size:16px}
.page-top{padding:35px 5px 16px;border-bottom:1px solid var(--line);margin-bottom:18px}.page-top h2{font-size:33px}.page-top>p:last-child{font-size:13px;color:#bfc2c3;line-height:1.55;max-width:480px}.inline-actions{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:15px}.primary-action,.outline-action{min-height:43px;padding:11px 15px;display:inline-flex;gap:8px;justify-content:center;align-items:center;border-radius:10px;font-size:13px;line-height:1.2;font-weight:700;border:1px solid #d3af6d}.primary-action{background:linear-gradient(145deg,#f0d298,#c79d5e);color:#1c1b1a;box-shadow:0 2px 14px #b88d4c1e}.outline-action{background:linear-gradient(145deg,#222c35,#19222d);color:#f1d9ad}.outline-action.disabled-action{opacity:.65;cursor:not-allowed}.primary-action.wide,.outline-action.wide{width:100%;margin:7px 0}.card{background:linear-gradient(148deg,#1c2630,#141b23);border:1px solid #655942;border-radius:17px;padding:18px;margin:14px 0;box-shadow:0 5px 15px #0005}.card h3{font-family:Georgia,serif;color:#f0d2a0;font-weight:600;font-size:19px;margin:3px 0 12px;display:flex;align-items:center}.card p{font-size:13px;line-height:1.65;color:#d7d2c8}
label{display:block;margin:17px 0 0;color:#e1c28e;font-size:12px;font-weight:700}input,select,textarea{display:block;width:100%;background:#0f1822;border:1px solid #5e6668;border-radius:10px;color:#f9f1e5;padding:12px;margin:7px 0 0;min-height:45px;font-size:14px}textarea{resize:vertical;line-height:1.6;min-height:110px}input[type=file]{font-size:11px}.previews{display:flex;gap:9px;flex-wrap:wrap;margin:13px 0}.previews img{height:78px;width:78px;object-fit:cover;border:1px solid #ba9e68;border-radius:10px}.avatar-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin:19px 0}.avatar-choice{display:flex;flex-direction:column;align-items:center;background:transparent;border:1px solid transparent;border-radius:14px;color:#c7c8c9;gap:7px;padding:8px 3px;font-size:11px}.avatar-choice img{width:100%;max-width:105px;aspect-ratio:1;border-radius:50%;object-fit:cover;object-position:center;border:3px solid #636466;box-shadow:0 4px 10px #000a}.avatar-choice.selected{background:#c6a36b18;color:#ffe2ac;border-color:#b69864}.avatar-choice.selected img{border-color:#e8bf77;box-shadow:0 0 0 3px #1d2631,0 0 0 5px #a88750}.editor-card h3{margin-bottom:2px}
.gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px}.gallery-card{background:#1a232e;border:1px solid #675b42;border-radius:12px;overflow:hidden;min-width:0}.gallery-card>button{border:0;background:none;color:inherit;padding:0;display:block;width:100%;text-align:left}.gallery-card img{display:block;width:100%;height:153px;object-fit:cover}.gallery-card .photo-caption{display:flex;flex-direction:column;gap:3px;padding:9px}.photo-caption strong{font-size:12px;color:#f5d7a0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photo-caption span{color:#b5bfc7;font-size:11px}.gallery-grid>.empty{padding:30px}
.map-full{padding:8px}.map-full>img{display:block;width:100%;background:#101e2c;border-radius:13px}.map-full .hint{padding:0 8px;margin:8px 0}.map-days-title{margin-top:28px}.map-days-title h3{font-family:Georgia,serif;font-size:21px;color:#e7d1a3;margin:0}
.entry{background:linear-gradient(120deg,#1b2631,#131c26);border:1px solid #555745;border-radius:15px;padding:15px;margin:11px 0}.entry img{width:100%;max-height:340px;object-fit:contain;border-radius:9px;background:#0d1520;margin-top:9px;cursor:pointer}.entry .meta{color:#d4b37a;font-size:12px;margin:6px 0}.entry p{white-space:pre-wrap;color:#e3dfd5;font-size:13px;line-height:1.6}.entry button{background:linear-gradient(120deg,#c69f69,#f6d9a4);color:#151b20;border-radius:8px;border:0;margin:7px 5px 0 0;font-size:12px;padding:9px 12px}.entry button.soft{background:#283744;color:#e9cea3;border:1px solid #72634b}#timeline>div[data-day]>h3{font-family:Georgia,serif;font-size:18px;color:#f0d6a6;margin:22px 0 8px;border-bottom:1px solid var(--line);padding-bottom:9px}.name-mapping{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.name-mapping label{font-size:11px;margin-top:6px;color:#d9c19a}.name-mapping img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:12px;border:1px solid #967c55;margin-bottom:5px}.name-mapping input{min-height:38px;font-size:12px;padding:6px}.app-version{text-align:center;padding:28px 10px 15px;font-size:10px;line-height:1.8;letter-spacing:.1em;color:#9e9b94}
.tabs{position:fixed;bottom:0;left:0;right:0;background:linear-gradient(180deg,#11171ff0,#080d12fa);border-top:1px solid #8a77534d;padding:9px max(6px,calc((100vw - 840px)/2)) calc(10px + env(safe-area-inset-bottom));display:flex;justify-content:space-around;align-items:center;gap:2px;z-index:25;backdrop-filter:blur(16px)}.tabs button{display:flex;align-items:center;flex-direction:column;gap:4px;min-width:0;flex:1;padding:3px 0;background:none;border:0;color:#aeb6b5;position:relative}.tabs .icon{width:24px;height:24px}.tabs small{font-size:10px;letter-spacing:.01em}.tabs button.active{color:#f2cb84}.tabs button.active:after{content:"";position:absolute;bottom:-9px;left:25%;right:25%;height:2px;background:#eccb8d;box-shadow:0 0 8px #ffc875}
.viewer{position:fixed;inset:0;z-index:50;background:#05080cf9;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow:hidden;touch-action:none}.viewer img{max-width:100%;max-height:83vh;object-fit:contain;transform-origin:center;touch-action:none}.viewer button{position:absolute;right:12px;top:calc(16px + env(safe-area-inset-top));border:1px solid #af966b;background:#101a29;color:#f0d49d;border-radius:9px;padding:10px 13px}.viewer #photoInfo{position:absolute;bottom:56px;color:#f8db9e;font-size:12px;text-align:center;padding:0 16px}.zoomhelp{position:absolute;bottom:24px;color:#98abb9;font-size:11px;text-align:center}
@media(min-width:600px){#app-main{padding-left:30px;padding-right:30px}.home-intro{padding-top:36px}.hero-art{height:420px}.map-preview img{height:300px}.quick-grid{gap:14px}.quick-card{min-height:135px}.gallery-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:349px){.wordmark{font-size:10px}.home-intro h1{font-size:28px}.quick-card .icon{width:23px;height:23px}.quick-card span{font-size:8px}.quick-card strong{font-size:9px}.kicker{letter-spacing:.13em}.top-private{font-size:8px}}
@media(prefers-reduced-motion:reduce){.page{animation:none}*{scroll-behavior:auto!important}}
