:root{--oh-paper: #fbf4e6;--oh-paper-bright: #fdfbf7;--oh-sand: #f3e8d2;--oh-ink: #2c2621;--oh-ink-soft: #6f6455;--oh-ink-faint: #a39682;--oh-line: #e6dac3;--oh-line-strong: #d5c5a6;--oh-accent: #1b4d3e;--oh-accent-deep: #123528;--oh-accent-soft: #e7efe9;--oh-on-accent: #f6fbf7;--oh-postit: #fff3ab;--oh-postit-edge: #ecd97f;--oh-tape: rgba(236, 222, 182, .9);--oh-polaroid: #fffdf8;--oh-success: #3b6d11;--oh-danger: #a32d2d;--oh-warn: #854f0b;--oh-display: "Playfair Display", Georgia, serif;--oh-ui: "Plus Jakarta Sans", system-ui, sans-serif;--oh-hand: "Caveat", cursive;--oh-r-card: 14px;--oh-r-tile: 12px;--oh-r-pill: 999px;--oh-shadow-paper: 0 1px 2px rgba(44, 38, 33, .1), 0 6px 18px rgba(44, 38, 33, .08);--oh-shadow-lift: 0 2px 4px rgba(44, 38, 33, .14), 0 14px 32px rgba(44, 38, 33, .16);--oh-fast: .16s;--oh-base: .24s;--oh-flip: .52s;--oh-ease: cubic-bezier(.33, 1, .68, 1);--oh-spring: cubic-bezier(.34, 1.4, .64, 1)}@media(prefers-reduced-motion:reduce){:root{--oh-fast: 0ms;--oh-base: 0ms;--oh-flip: 0ms}}body{margin:0;background:var(--oh-paper);color:var(--oh-ink);font-family:var(--oh-ui);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{font-size:15px;line-height:1.5}button{font-family:var(--oh-ui);cursor:pointer}.wrap{max-width:760px;margin:0 auto;padding:0 16px 48px}.appbar{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--oh-paper) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--oh-line)}.appbar .inner{max-width:760px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:12px}.brand{font-family:var(--oh-display);font-weight:700;font-size:21px;color:var(--oh-accent)}.brand small{display:block;font-family:var(--oh-ui);font-weight:600;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--oh-ink-faint)}.spacer{flex:1}.langtoggle{display:inline-flex;border:1px solid var(--oh-line-strong);border-radius:var(--oh-r-pill);overflow:hidden;background:var(--oh-paper-bright)}.langtoggle button{border:0;background:transparent;font-weight:700;font-size:12px;padding:6px 13px;color:var(--oh-ink-soft)}.langtoggle button.on{background:var(--oh-accent);color:var(--oh-on-accent)}.iconbtn{border:1px solid var(--oh-line-strong);background:var(--oh-paper-bright);border-radius:var(--oh-r-pill);padding:6px 13px;font-weight:700;font-size:12.5px;color:var(--oh-ink-soft)}.login{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:linear-gradient(180deg,#d6ebee 0%,var(--oh-paper) 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px}.login .card{background:#fff;border:1px solid var(--oh-line);border-radius:20px;padding:24px 20px;width:100%;max-width:360px;text-align:center;box-shadow:0 10px 40px #00000014}.login .logo{width:96px;height:96px;border-radius:22px;margin-bottom:10px}.login h1{font-family:var(--oh-display);color:var(--oh-accent);font-size:27px;margin:2px 0 0;font-weight:700}.login .sub{font-size:11.5px;letter-spacing:1.5px;text-transform:uppercase;color:var(--oh-secondary, #d4a373);font-weight:700;margin-bottom:16px}.login input{width:100%;box-sizing:border-box;text-align:center;font-family:var(--oh-ui);font-size:20px;letter-spacing:3px;border:1px solid var(--oh-line-strong);border-radius:12px;padding:13px;margin-bottom:12px;background:#fff;color:var(--oh-ink);outline:none}.login input:focus{border-color:var(--oh-accent)}.login button.primary{width:100%;font-family:var(--oh-ui);font-weight:800;font-size:15px;border-radius:22px;padding:13px;border:none;background:var(--oh-accent);color:#fff;cursor:pointer}.login button.primary:disabled{opacity:.55}.login .whois{font-size:13px;color:#5a5a5a;margin-bottom:12px}.login .pinwho{font-size:15px;font-weight:800;color:var(--oh-accent);margin-bottom:10px}.login .names{display:flex;flex-wrap:wrap;gap:9px;justify-content:center;margin-bottom:6px}.login .names button{font-family:var(--oh-ui);font-weight:800;font-size:15px;border:1px solid var(--oh-line-strong);background:#fff;color:var(--oh-accent);border-radius:14px;padding:12px 16px;cursor:pointer;min-width:84px}.login .err{color:#c0392b;font-size:12px;font-weight:700;min-height:14px;margin-bottom:6px}.login .back{background:none;border:none;color:var(--oh-ink-faint);font-size:12px;cursor:pointer;margin-top:12px;text-decoration:underline}.login .langbox{display:inline-flex;margin-top:14px;border:1px solid var(--oh-line-strong);border-radius:10px;overflow:hidden;background:#fff}.login .langbox button{border:0;background:transparent;font-family:var(--oh-ui);font-weight:700;font-size:11.5px;padding:5px 12px;color:var(--oh-ink-soft);cursor:pointer}.login .langbox button.on{background:var(--oh-accent);color:#fff}.shelfhead{font-family:var(--oh-display);font-weight:700;font-size:26px;margin:26px 0 16px}.shelf{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px}.tripcard{background:var(--oh-paper-bright);border:1px solid var(--oh-line);border-radius:var(--oh-r-card);box-shadow:var(--oh-shadow-paper);overflow:hidden;cursor:pointer;transition:transform var(--oh-base) var(--oh-spring),box-shadow var(--oh-base) var(--oh-ease);text-align:left;padding:0}.tripcard:hover{transform:translateY(-4px) rotate(-.4deg);box-shadow:var(--oh-shadow-lift)}.tripcard .cover{height:110px;position:relative;background:var(--oh-accent-soft)}.tripcard .badge{position:absolute;top:10px;left:10px;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;border-radius:var(--oh-r-pill);padding:4px 10px;background:#fdfbf7ed;color:var(--oh-accent-deep)}.tripcard .body{padding:13px 15px 15px;border-top:3px solid var(--oh-accent)}.tripcard h3{margin:0;font-family:var(--oh-display);font-weight:700;font-size:19px}.tripcard .dates{font-size:12px;color:var(--oh-ink-soft);margin-top:3px}.tripcard.ghost{border-style:dashed;border-color:var(--oh-line-strong);background:transparent;box-shadow:none;display:flex;align-items:center;justify-content:center;min-height:196px;color:var(--oh-ink-soft);font-size:13.5px;font-weight:700}.daystrip{display:flex;gap:8px;overflow-x:auto;padding:14px 2px 10px;position:sticky;top:57px;z-index:15;background:var(--oh-paper)}.day{flex:0 0 auto;text-align:center;border:1px solid var(--oh-line);background:var(--oh-paper-bright);border-radius:12px;padding:7px 12px;cursor:pointer;transition:all var(--oh-fast) var(--oh-ease);min-width:62px}.day .dw{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--oh-ink-faint)}.day .dn{font-family:var(--oh-display);font-size:19px;font-weight:700;line-height:1.1}.day .dd{font-size:10px;color:var(--oh-ink-soft)}.day.active{background:var(--oh-accent);border-color:var(--oh-accent);color:var(--oh-on-accent);box-shadow:var(--oh-shadow-paper)}.day.active .dw{color:#bcd2c6}.day.active .dd{color:#cfe0d6}.dayhead{text-align:center;padding:18px 0 6px}.dayhead .kicker{font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--oh-ink-faint)}.dayhead h2{font-family:var(--oh-display);font-weight:700;font-size:27px;color:var(--oh-accent-deep);margin:4px 0 6px}.dayhead .sun{font-size:12px;color:var(--oh-ink-soft)}.routes{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin:12px 0 4px}.routebtn{display:inline-block;font-size:12px;font-weight:700;color:var(--oh-accent);background:var(--oh-accent-soft);border:1px solid var(--oh-accent-soft);border-radius:var(--oh-r-pill);padding:6px 14px;text-decoration:none}.packline{background:var(--oh-sand);border:1px solid var(--oh-line);border-radius:12px;padding:10px 14px;margin:12px 0;font-size:12.5px;color:var(--oh-ink-soft)}.timeline{display:flex;flex-direction:column;gap:14px;margin:14px 0}.stop{background:var(--oh-paper-bright);border:1px solid var(--oh-line);border-radius:var(--oh-r-tile);box-shadow:var(--oh-shadow-paper);padding:14px 16px;display:flex;gap:13px}.check{width:27px;height:27px;border-radius:50%;border:2px solid var(--oh-line-strong);flex:0 0 auto;margin-top:2px;cursor:pointer;transition:all var(--oh-fast) var(--oh-spring);display:flex;align-items:center;justify-content:center;color:transparent;font-size:14px;background:#fff}.check.on{background:var(--oh-accent);border-color:var(--oh-accent);color:#fff}.check.ro{cursor:default;opacity:.55}.stop .when{font-family:var(--oh-display);font-weight:700;font-size:15px;color:var(--oh-accent);min-width:72px}.stop .when .sub{display:block;font-family:var(--oh-ui);font-weight:600;font-size:10px;color:var(--oh-ink-faint);letter-spacing:.05em;text-transform:uppercase;margin-top:3px;line-height:1.5}.stop .when .dep{color:var(--oh-danger)}.stop h3{margin:0 0 3px;font-size:15.5px;font-weight:700;display:flex;flex-wrap:wrap;gap:7px;align-items:center}.stop h3 .done-title{text-decoration:line-through;text-decoration-color:var(--oh-line-strong);color:var(--oh-ink-soft)}.meal{font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;background:var(--oh-sand);color:var(--oh-warn);border-radius:var(--oh-r-pill);padding:3px 9px}.bdg{font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;background:var(--oh-accent-soft);color:var(--oh-accent-deep);border-radius:var(--oh-r-pill);padding:3px 9px}.stop p{margin:0 0 8px;font-size:13px;color:var(--oh-ink-soft)}.stop ul{margin:8px 0 0;padding:0;list-style:none;font-size:12.5px;color:var(--oh-ink-soft)}.stop li{padding:3px 0;display:flex;gap:8px;align-items:flex-start;cursor:pointer}.stop li.ro{cursor:default}.stop li .mini{width:15px;height:15px;border-radius:4px;border:1.5px solid var(--oh-line-strong);flex:0 0 auto;margin-top:2px;background:#fff}.stop li.on .mini{background:var(--oh-accent);border-color:var(--oh-accent)}.stop li.on{color:var(--oh-ink-faint);text-decoration:line-through;text-decoration-color:var(--oh-line-strong)}.maplink{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--oh-accent);text-decoration:none;background:var(--oh-accent-soft);border-radius:var(--oh-r-pill);padding:5px 12px;margin:6px 8px 0 0}.byline{font-size:10.5px;color:var(--oh-ink-faint);margin-top:6px;font-family:var(--oh-hand);font-size:15px}.infobox{background:var(--oh-postit);box-shadow:var(--oh-shadow-paper);padding:14px 16px 16px;margin:16px 6px;transform:rotate(-.6deg);position:relative}.infobox:after{content:"";position:absolute;right:0;bottom:0;border-style:solid;border-width:0 0 18px 18px;border-color:transparent transparent var(--oh-paper) transparent}.infobox h4{margin:0 0 5px;font-family:var(--oh-hand);font-size:21px;color:#6b5f2e;font-weight:600}.infobox p{margin:0;font-size:13px;color:#4a4324}.tasks{background:var(--oh-paper-bright);border:1px solid var(--oh-line);border-radius:var(--oh-r-tile);box-shadow:var(--oh-shadow-paper);padding:14px 16px;margin:16px 0}.tasks h4{margin:0 0 8px;font-family:var(--oh-display);font-weight:700;font-size:16px;color:var(--oh-accent-deep)}.journal{margin:22px 0}.journal h4,.photos h4{font-family:var(--oh-display);font-weight:700;font-size:18px;color:var(--oh-accent-deep);margin:0 0 10px}.jnotes{display:flex;flex-wrap:wrap;gap:14px}.jnote{background:var(--oh-postit);box-shadow:var(--oh-shadow-paper);padding:13px 14px 15px;width:208px;font-family:var(--oh-hand);font-size:17.5px;line-height:1.3;color:#4a4324}.jnote:nth-child(odd){transform:rotate(1.4deg)}.jnote:nth-child(2n){transform:rotate(-1.2deg)}.jnote .who{display:block;margin-top:7px;font-size:13.5px;color:#8a7d3e}.jwrite{display:flex;gap:8px;margin-top:14px}.jwrite input{flex:1;border:1.5px solid var(--oh-line-strong);border-radius:12px;padding:10px 13px;font:500 14px var(--oh-ui);background:#fff;outline:none}.jwrite button{border:0;border-radius:var(--oh-r-pill);background:var(--oh-accent);color:var(--oh-on-accent);font-weight:700;font-size:13px;padding:0 18px}.photos{margin:22px 0}.pgrid{display:flex;flex-wrap:wrap;gap:16px}.polaroid{background:var(--oh-polaroid);padding:8px 8px 11px;box-shadow:var(--oh-shadow-paper);width:132px;transition:transform var(--oh-base) var(--oh-spring)}.polaroid:hover{transform:scale(1.04) rotate(.6deg);box-shadow:var(--oh-shadow-lift)}.polaroid:nth-child(3n){transform:rotate(-1.6deg)}.polaroid:nth-child(3n+1){transform:rotate(1.2deg)}.polaroid img{width:100%;height:108px;object-fit:cover;display:block;background:var(--oh-sand)}.polaroid .cap{font-family:var(--oh-hand);font-size:14.5px;text-align:center;padding-top:6px;color:#3d372f;min-height:18px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.pempty{font-size:13px;color:var(--oh-ink-faint)}.pill{position:fixed;bottom:18px;left:50%;transform:translate(-50%);background:var(--oh-accent-deep);color:var(--oh-on-accent);font-size:12.5px;font-weight:700;border-radius:var(--oh-r-pill);padding:8px 18px;box-shadow:var(--oh-shadow-lift);z-index:40}.offbanner{background:var(--oh-sand);border-bottom:1px solid var(--oh-line-strong);text-align:center;font-size:12px;font-weight:600;color:var(--oh-ink-soft);padding:6px}.modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#2c262159;z-index:50;display:flex;align-items:flex-end,center;align-items:center;justify-content:center;padding:18px}.modal{background:var(--oh-paper);border-radius:18px;box-shadow:var(--oh-shadow-lift);width:100%;max-width:480px;max-height:86vh;overflow:auto;padding:22px}.modal h3{font-family:var(--oh-display);font-weight:700;font-size:21px;margin:0 0 4px;color:var(--oh-accent-deep)}.modal .privacy{font-size:12px;color:var(--oh-ink-faint);margin:0 0 14px}.modal label{display:block;font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--oh-ink-soft);margin:12px 0 4px}.modal input,.modal textarea,.modal select{width:100%;border:1.5px solid var(--oh-line-strong);border-radius:10px;padding:9px 12px;font:500 14px var(--oh-ui);background:#fff;outline:none}.modal .actions{display:flex;gap:10px;margin-top:18px;justify-content:flex-end}.modal .primary{border:0;border-radius:var(--oh-r-pill);background:var(--oh-accent);color:var(--oh-on-accent);font-weight:700;padding:10px 20px}.modal .ghostbtn{border:1px solid var(--oh-line-strong);border-radius:var(--oh-r-pill);background:transparent;color:var(--oh-ink-soft);font-weight:700;padding:10px 18px}.mrow{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--oh-line);flex-wrap:wrap}.mrow .nm{font-weight:700;min-width:70px}.mrow select{width:auto;padding:5px 8px;font-size:13px}.mrow .chk{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--oh-ink-soft)}.chips{display:flex;flex-wrap:wrap;gap:7px;margin:8px 0 14px}.chip{border:1px solid var(--oh-line-strong);background:var(--oh-paper-bright);border-radius:var(--oh-r-pill);padding:7px 13px;font-weight:700;font-size:12.5px;color:var(--oh-ink-soft)}.chip.sel{background:var(--oh-accent);border-color:var(--oh-accent);color:var(--oh-on-accent)}.prompttip{font-size:12.5px;color:var(--oh-ink-soft);margin:2px 0 10px}.swapbtn{margin-top:8px;border:1px dashed var(--oh-line-strong);background:transparent;border-radius:var(--oh-r-pill);padding:5px 12px;font-weight:700;font-size:12px;color:var(--oh-ink-faint)}.swapbtn:hover{color:var(--oh-accent);border-color:var(--oh-accent)}.swapmodal{max-width:480px}.swapopts{display:flex;flex-direction:column;gap:9px;max-height:46vh;overflow-y:auto;margin:6px 0}.swapopt{display:flex;gap:10px;text-align:left;border:1.5px solid var(--oh-line);background:var(--oh-paper-bright);border-radius:12px;padding:9px;align-items:flex-start}.swapopt.sel{border-color:var(--oh-accent);background:var(--oh-accent-soft)}.swapopt img{width:64px;height:64px;object-fit:cover;border-radius:8px;flex-shrink:0}.so-name{font-weight:800;font-size:14px;color:var(--oh-ink)}.so-meta{font-size:11.5px;color:var(--oh-ink-soft);margin:2px 0}.so-open{color:var(--oh-accent-deep);font-weight:700}.so-closed{color:var(--oh-danger);font-weight:700}.so-blurb{font-size:12px;color:var(--oh-ink-soft)}.stop.overridden .ovr-orig{opacity:.45}.stop.overridden .ovr-orig .done-title,.stop.overridden .ovr-orig h3 span:first-child{text-decoration:line-through}.ovrbar{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11.5px;font-weight:700;border-radius:8px;padding:5px 10px;margin-bottom:7px}.ovrbar.skipped{background:#f6e8e2;color:#9a4a2e}.ovrbar.replaced{background:var(--oh-accent-soft);color:var(--oh-accent-deep)}.ovrbar i{font-weight:500;opacity:.75}.ovrundo{border:0;background:transparent;font-weight:800;font-size:11.5px;color:inherit;text-decoration:underline}.ovrcard{border:1.5px solid var(--oh-accent);background:var(--oh-paper-bright);border-radius:12px;padding:10px 12px;margin-bottom:8px}.ovrcard h3{margin:0 0 4px;font-size:15px}.ovrcard p{margin:0 0 6px;font-size:13px;color:var(--oh-ink-soft)}.packbtn{margin:8px 0 0;border:1px solid var(--oh-line-strong);background:var(--oh-postit, #fff3ab);border-radius:var(--oh-r-pill);padding:7px 14px;font-weight:800;font-size:12.5px;color:var(--oh-ink)}.packgroup h4{margin:12px 0 4px;font-size:13px;color:var(--oh-accent-deep)}.packgroup ul{list-style:none;margin:0;padding:0}.packgroup li{display:flex;gap:8px;align-items:flex-start;padding:5px 0;font-size:13.5px;cursor:pointer;color:var(--oh-ink)}.packgroup li .mini{width:16px;height:16px;border-radius:5px;border:1.5px solid var(--oh-line-strong);background:#fff;flex-shrink:0;margin-top:2px}.packgroup li.on{text-decoration:line-through;color:var(--oh-ink-faint)}.packgroup li.on .mini{background:var(--oh-accent);border-color:var(--oh-accent)}.packnote{margin-top:14px;background:var(--oh-postit, #fff3ab);border-radius:10px;padding:10px 12px;font-family:var(--oh-hand);font-size:15px}.jtopic{display:inline-block;font-size:10.5px;font-weight:800;color:var(--oh-accent-deep);background:var(--oh-accent-soft);border:1px solid var(--oh-line);border-radius:var(--oh-r-pill);padding:1px 8px;margin-right:7px;vertical-align:1px}.jcompose{margin-top:10px}.jcompose .prompttip{font-family:var(--oh-hand);font-size:15.5px}.photos h4{display:flex;align-items:center;gap:10px}.addphoto{margin-left:auto;border:1px solid var(--oh-line-strong);background:var(--oh-paper-bright);border-radius:var(--oh-r-pill);padding:6px 13px;font-weight:700;font-size:12px;color:var(--oh-ink-soft)}.polaroid{cursor:zoom-in}.lb-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#14100ce0;display:flex;align-items:center;justify-content:center;padding:18px}.lb-inner{position:relative;max-width:min(920px,96vw);text-align:center}.lb-inner img{max-width:100%;max-height:72vh;border:8px solid var(--oh-polaroid, #fffdf8);border-radius:4px;box-shadow:0 18px 50px #00000080}.lb-loading{color:#fff;padding:60px 80px}.lb-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;border:0;background:#fdfbf7eb;border-radius:50%;width:42px;height:42px;font-size:24px;font-weight:700;color:var(--oh-ink)}.lb-prev{left:-8px}.lb-next{right:-8px}.lb-meta{color:#f3ecdd;margin-top:10px}.lb-head{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.8}.lb-title{font-family:var(--oh-hand);font-size:19px}.lb-sub{font-size:12.5px;opacity:.8}.lb-bar{margin-top:12px;display:flex;gap:10px;justify-content:center}.dangerbtn{border:0;border-radius:var(--oh-r-pill);background:var(--oh-danger, #b3402a);color:#fff;font-weight:700;font-size:13px;padding:9px 18px}.addmember{border:1px dashed var(--oh-line-strong);border-radius:12px;padding:12px;margin-top:10px;display:flex;flex-direction:column;gap:8px}.iconbtn.on-accent{border-color:var(--oh-accent);color:var(--oh-accent)}.modal .actions .primary{border:0;border-radius:var(--oh-r-pill);background:var(--oh-accent);color:var(--oh-on-accent);font-weight:700;font-size:14px;padding:10px 18px}.modal .actions .primary.alt{background:var(--oh-paper-bright);color:var(--oh-accent);border:1.5px solid var(--oh-accent)}.modal .actions .primary:disabled{opacity:.5}.simple .when .sub,.simple .stop ul{display:none!important}.simple .stop p{display:none}.simple .stop h3{font-size:17px}.simple .infobox p{font-size:14px}
