@import "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,700&family=Figtree:wght@400;500;600;700&display=swap";:root{--ink:#142a2a;--ink-soft:#3a5554;--sea:#0d6e6a;--sea-deep:#0a4f4c;--foam:#e7f3f2;--sand:#f3ebe1;--sun:#f0b429;--coral:#d45d4c;--line:#142a2a1f;--shadow:0 18px 50px #0a28281f;--radius:18px;--font-display:"Fraunces", Georgia, serif;--font-body:"Figtree", system-ui, sans-serif;color:var(--ink);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:radial-gradient(1200px 600px at 10% -10%, #d8efe9 0%, transparent 55%), radial-gradient(900px 500px at 100% 0%, #f7e7c8 0%, transparent 50%), linear-gradient(180deg, #f7fbfa 0%, var(--sand) 100%);background-attachment:fixed;line-height:1.45}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0}a{color:var(--sea-deep)}button,input,select,textarea{font:inherit}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 .35em;font-weight:700}p{margin:0 0 .75em}.brand-mark{font-family:var(--font-display);color:var(--sea-deep);margin:0 0 .4rem;font-size:clamp(2.8rem,10vw,4.5rem);font-weight:700;line-height:.95;animation:.7s both rise}.brand-mark.compact{letter-spacing:.04em;text-transform:uppercase;color:var(--sea);font-size:1.1rem}.lede{color:var(--ink-soft);max-width:28rem;animation:.8s 50ms both rise}.lede-inline{color:var(--ink-soft);margin-bottom:1rem}.muted{color:var(--ink-soft)}.app-shell{width:min(720px,100%);margin:0 auto;padding:1.25rem 1rem 4rem;animation:.45s both rise}.topbar{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.25rem;display:flex}.back-link{color:var(--sea);margin-bottom:.35rem;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-block}.panel{border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--shadow);background:#ffffffb8;padding:1rem 1.1rem}.identity-panel{margin-bottom:1.25rem}.section-head{justify-content:space-between;align-items:center;gap:.75rem;margin:1.25rem 0 .75rem;display:flex}.form-stack{gap:.85rem;display:grid}.form-stack label,.modal label{gap:.35rem;font-size:.92rem;font-weight:600;display:grid}input,select,textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#ffffffe6;border-radius:12px;padding:.7rem .8rem}textarea{resize:vertical}.row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.row.actions{grid-template-columns:auto auto;justify-content:start}@media (width<=560px){.row{grid-template-columns:1fr}}.btn{cursor:pointer;border:0;border-radius:999px;padding:.7rem 1.1rem;font-weight:700;transition:transform .15s,background .15s,color .15s}.btn:active{transform:scale(.98)}.btn.small{padding:.35rem .75rem;font-size:.85rem}.btn.primary{background:var(--sea);color:#fff}.btn.primary:hover{background:var(--sea-deep)}.btn.secondary{background:var(--foam);color:var(--sea-deep)}.btn.ghost{color:var(--ink-soft);background:0 0}.btn.danger{color:var(--coral)}.form-error{color:var(--coral);font-weight:600}.hint{color:var(--ink-soft);font-size:.9rem}.check-row{align-items:center;gap:.55rem;font-weight:600;display:flex!important}.check-row input{width:auto}.login-page{place-items:center;min-height:100dvh;padding:1.5rem;display:grid;position:relative;overflow:hidden}.login-sky{background:linear-gradient(160deg,#0d6e6a2e,#0000 45%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='80' viewBox='0 0 160 80'%3E%3Cpath d='M0 40c20-18 40-18 60 0s40 18 60 0 40-18 60 0' fill='none' stroke='%230d6e6a' stroke-opacity='0.12' stroke-width='2'/%3E%3C/svg%3E") bottom/320px repeat-x,linear-gradient(#dff1ef 0%,#f7f1e7 55%,#efe2cf 100%);animation:18s linear infinite drift;position:absolute;inset:0}.login-panel{z-index:1;width:min(420px,100%);position:relative}.login-form{gap:.85rem;margin-top:1.4rem;animation:.85s .1s both rise;display:grid}.login-form label{gap:.35rem;font-weight:600;display:grid}.trip-list{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.trip-link{color:inherit;border-radius:var(--radius);border:1px solid var(--line);background:#ffffffb3;flex-direction:column;gap:.2rem;padding:1rem 1.1rem;text-decoration:none;transition:transform .18s,border-color .18s;display:flex}.trip-link:hover{border-color:#0d6e6a59;transform:translateY(-2px)}.trip-name{font-family:var(--font-display);font-size:1.35rem}.trip-dates,.empty,.empty-slot{color:var(--ink-soft);font-size:.95rem}.trip-notes{border-left:3px solid var(--sun);background:#ffffff8c;border-radius:0 12px 12px 0;padding:.75rem 1rem}.tabs{border:1px solid var(--line);background:#ffffff8c;border-radius:999px;gap:.4rem;margin:1rem 0 1.25rem;padding:.25rem;display:flex}.tabs button{color:var(--ink-soft);cursor:pointer;background:0 0;border:0;border-radius:999px;flex:1;padding:.65rem .8rem;font-weight:700}.tabs button.active{background:var(--sea);color:#fff}.day-rail{scroll-snap-type:x mandatory;gap:.5rem;margin-bottom:1rem;padding-bottom:.5rem;display:flex;overflow-x:auto}.day-chip{scroll-snap-align:start;border:1px solid var(--line);cursor:pointer;color:var(--ink-soft);background:#ffffffbf;border-radius:999px;flex:none;padding:.55rem .9rem;font-weight:600}.day-chip.active{background:var(--sea-deep);color:#fff;border-color:#0000}.day-timeline{gap:1rem;display:grid}.slot-block{border-bottom:1px solid var(--line);padding-bottom:.5rem}.slot-head{justify-content:space-between;align-items:center;margin-bottom:.4rem;display:flex}.slot-head h4{color:var(--sea-deep);margin:0;font-size:1rem}.activity-list,.idea-list{gap:.55rem;margin:0;padding:0;list-style:none;display:grid}.activity-row{grid-template-columns:auto 1fr auto;align-items:center;gap:.55rem;padding:.55rem .35rem;display:grid}.activity-row.status-done .activity-title{opacity:.7;text-decoration:line-through}.check,.activity-body{text-align:left;cursor:pointer;color:inherit;background:0 0;border:0;padding:0}.check{border:1.5px solid var(--sea);width:2rem;height:2rem;color:var(--sea-deep);border-radius:50%;place-items:center;font-weight:700;display:grid}.activity-title{align-items:baseline;gap:.5rem;font-weight:700;display:flex}.activity-title time{color:var(--sea);font-variant-numeric:tabular-nums;font-size:.9rem}.activity-meta,.activity-link-hint{color:var(--ink-soft);font-size:.85rem;display:block}.activity-thumb{object-fit:cover;border-radius:10px;width:48px;height:48px}.idea-item{border:1px solid var(--line);border-radius:var(--radius);background:#ffffffb3;grid-template-columns:1fr auto auto;align-items:center;gap:.75rem;padding:.9rem 1rem;display:grid}@media (width<=560px){.idea-item{grid-template-columns:1fr auto}.idea-item .btn{grid-column:1/-1}}.idea-title{font-family:var(--font-display);text-align:left;cursor:pointer;color:inherit;background:0 0;border:0;padding:0;font-size:1.15rem;font-weight:700}.pill{text-transform:uppercase;letter-spacing:.04em;color:var(--sea-deep);background:var(--foam);border-radius:999px;margin-top:.25rem;padding:.2rem .5rem;font-size:.75rem;font-weight:700;display:inline-block}.clamp{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.vote-col{justify-items:center;gap:.15rem;font-weight:700;display:grid}.vote{cursor:pointer;color:var(--ink-soft);background:0 0;border:0;padding:.15rem;font-size:.85rem}.vote.on{color:var(--coral)}.modal-backdrop{z-index:20;background:#0f232373;place-items:center;padding:1rem;animation:.2s fade;display:grid;position:fixed;inset:0}.modal{gap:.85rem;width:min(420px,100%);display:grid}.links-fieldset{border:1px solid var(--line);border-radius:14px;padding:.75rem}.links-fieldset legend{padding:0 .35rem;font-weight:700}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.6rem;margin:.5rem 0;display:grid}.photo-grid figure{gap:.25rem;margin:0;display:grid}.photo-grid img{aspect-ratio:1;object-fit:cover;border-radius:12px;width:100%}.file-label input{margin-top:.35rem}.fade-in{animation:.35s both rise}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes drift{0%{background-position:0 100%,bottom,0 0}to{background-position:0 100%,calc(100% + 320px) bottom,0 0}}
