: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{min-height:calc(100vh - 60px);display:flex;align-items:center;justify-content:center;padding:24px 16px}.login .card{background:var(--oh-paper-bright);border:1px solid var(--oh-line);border-radius:20px;box-shadow:var(--oh-shadow-paper);padding:30px 24px;width:100%;max-width:380px;text-align:center}.login h1{font-family:var(--oh-display);font-weight:700;font-size:34px;color:var(--oh-accent);margin:0}.login .sub{color:var(--oh-ink-soft);font-size:13px;margin:4px 0 22px}.login input{width:100%;border:1.5px solid var(--oh-line-strong);border-radius:12px;background:#fff;padding:12px 14px;font:600 17px var(--oh-ui);text-align:center;letter-spacing:.12em;color:var(--oh-ink);outline:none}.login input:focus{border-color:var(--oh-accent)}.login .go{margin-top:14px;width:100%;border:0;border-radius:var(--oh-r-pill);background:var(--oh-accent);color:var(--oh-on-accent);font-weight:700;font-size:15px;padding:12px;transition:transform var(--oh-fast) var(--oh-spring)}.login .go:active{transform:scale(.97)}.login .names{display:flex;flex-wrap:wrap;gap:9px;justify-content:center}.login .names button{border:1px solid var(--oh-line-strong);background:#fff;border-radius:var(--oh-r-pill);padding:9px 17px;font-weight:700;font-size:14px;color:var(--oh-ink)}.login .names button:hover{border-color:var(--oh-accent);color:var(--oh-accent)}.login .err{color:var(--oh-danger);font-size:13px;margin-top:10px;min-height:18px}.login .back{margin-top:14px;background:none;border:none;color:var(--oh-ink-soft);font-size:13px;text-decoration:underline}.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)}
