@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap");:root{color-scheme:light;--pure-black:#000000;--text:#1d1d1f;--text-secondary:rgba(0,0,0,0.8);--text-tertiary:rgba(0,0,0,0.48);--page-bg:#f5f5f7;--surface:#ffffff;--surface-subtle:#fafafc;--surface-dark:#272729;--surface-dark-2:#2a2a2d;--line:#d2d2d7;--accent:#0071e3;--accent-link:#0066cc;--accent-link-dark:#2997ff;--danger:#ff3b30;--shadow-card:rgba(0,0,0,0.22) 3px 5px 30px 0px;--nav-bg:rgba(245,245,247,0.9);--font-display:"Roboto",sans-serif;--font-text:"Roboto",sans-serif}*{box-sizing:border-box}html{min-height:100%}body,html{background:var(--page-bg)}body{margin:0;min-height:100dvh;color:var(--text);font-family:var(--font-text);font-size:17px;font-weight:400;line-height:1.47;letter-spacing:-.374px;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}iframe{width:100%;min-height:220px;border:0;border-radius:20px}.app-frame,.auth-shell{min-height:100dvh}.auth-shell{display:grid;place-items:center;padding:40px 20px;background:var(--page-bg)}.auth-card{width:min(100%,420px);padding:40px 32px 32px;border-radius:30px;background:var(--surface);box-shadow:var(--shadow-card)}.auth-brand{display:flex;justify-content:center;align-items:center;width:100%;margin-bottom:20px;font-family:var(--font-display);color:var(--text);font-size:clamp(30px,7vw,40px);font-weight:700;line-height:1.08;letter-spacing:-.4px;text-align:center}.auth-copy{margin-bottom:28px;text-align:center}.auth-copy h1,.card-copy h3,.modal-header h2{margin:0;font-family:var(--font-display);color:var(--text)}.auth-copy h1{font-size:40px;font-weight:600;line-height:1.1;letter-spacing:-.28px}.auth-copy p,.card-copy p,.detail-label{margin:0;color:var(--text-secondary)}.eyebrow{margin:0 0 8px;color:var(--text-tertiary);font-size:12px;font-weight:600;line-height:1.33;letter-spacing:.5px;text-transform:uppercase}.app-frame{padding:env(safe-area-inset-top) 0 calc(92px + env(safe-area-inset-bottom))}.app-frame,.topbar{background:var(--page-bg)}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;height:48px;padding:0 calc(20px + env(safe-area-inset-right)) 0 calc(20px + env(safe-area-inset-left))}.brand-mark{display:inline-flex;align-items:center;flex-shrink:0;font-family:var(--font-display);color:var(--text);font-size:17px;font-weight:700;line-height:1.2;letter-spacing:-.2px;white-space:nowrap}.page-content,.stack{display:grid;grid-gap:16px;gap:16px;min-width:0}.page-content{width:min(100%,980px);margin:0 auto;padding:24px 20px 0}.stack-tight{display:grid;grid-gap:10px;gap:10px;min-width:0}.coffee-card,.empty-state,.modal-panel,.panel{background:var(--surface);border-radius:24px}.coffee-card,.empty-state,.search-section{box-shadow:var(--shadow-card)}.empty-state,.panel{padding:18px}.search-section{padding:12px 16px 16px}.search-section__toggle{display:flex;justify-content:space-between;align-items:center;width:100%;padding:4px 0 6px;border:0;color:var(--text);background:transparent}.search-section__label{font-size:14px;font-weight:600;line-height:1.43;letter-spacing:-.224px}.search-section__chevron{color:var(--text-tertiary);font-size:18px;line-height:1;transition:transform .16s ease}.search-section__chevron.is-open{transform:rotate(180deg)}.search-section__content{display:grid;grid-template-rows:0fr;opacity:0;visibility:hidden;transform:translateY(-10px);transition:grid-template-rows .28s cubic-bezier(.22,1,.36,1),opacity .18s ease,transform .28s cubic-bezier(.22,1,.36,1),visibility 0s linear .28s}.search-section__content.is-open{grid-template-rows:1fr;opacity:1;visibility:visible;transform:translateY(0);transition:grid-template-rows .28s cubic-bezier(.22,1,.36,1),opacity .2s ease,transform .28s cubic-bezier(.22,1,.36,1),visibility 0s linear 0s}.search-section__body{min-height:0;overflow:hidden;padding-top:0;transition:padding-top .28s cubic-bezier(.22,1,.36,1)}.search-section__content.is-open .search-section__body{padding-top:12px}.section-actions{display:flex;justify-content:flex-end}.detail-grid,.split-grid,.toolbar-grid{display:grid;grid-gap:12px;gap:12px}.field{display:grid;grid-gap:6px;gap:6px;min-width:0}.field span{color:var(--text);font-size:14px;font-weight:600;line-height:1.29;letter-spacing:-.224px}.field-hint{margin:0;color:var(--text-tertiary);font-size:12px;line-height:1.33;letter-spacing:-.12px}.input,.textarea{width:100%;max-width:100%;min-width:0;padding:10px 14px;border:1px solid var(--line);border-radius:18px;color:var(--text);background:var(--surface);outline:none;transition:border-color .16s ease,box-shadow .16s ease}.input:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(0,113,227,.2)}.input[type=date]{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-height:44px;line-height:1.47;text-align:left}.input[type=date]::-webkit-date-and-time-value{min-height:1.47em;text-align:left}.input[type=date]::-webkit-datetime-edit,.input[type=date]::-webkit-datetime-edit-fields-wrapper{padding:0}.searchable-select{position:relative}.searchable-select__input{padding-right:40px}.searchable-select__chevron{position:absolute;top:50%;right:14px;color:var(--text-tertiary);font-size:18px;line-height:1;pointer-events:none;transform:translateY(-50%);transition:transform .16s ease}.searchable-select__chevron.is-open{transform:translateY(-50%) rotate(180deg)}.searchable-select__popover{position:absolute;top:calc(100% + 8px);left:0;width:100%;z-index:20}.searchable-select__listbox{max-height:240px;overflow-y:auto;padding:8px;border:1px solid var(--line);border-radius:20px;background:var(--surface);box-shadow:var(--shadow-card)}.searchable-select__empty,.searchable-select__option{width:100%;padding:10px 12px;border-radius:14px;font-size:15px;line-height:1.4}.searchable-select__option{display:flex;justify-content:space-between;align-items:center;gap:12px;border:0;color:var(--text);text-align:left;background:transparent}.searchable-select__option.is-active,.searchable-select__option:hover{background:rgba(0,113,227,.08)}.searchable-select__check,.searchable-select__empty{color:var(--text-tertiary);font-size:13px}.textarea{min-height:96px;resize:vertical}.file-input{padding:12px 14px;border-style:dashed;border-color:rgba(0,0,0,.16);color:var(--text-secondary);background:var(--surface-subtle)}.file-input:hover{border-color:rgba(0,113,227,.34);background:rgba(0,113,227,.04)}.file-input::-webkit-file-upload-button{margin-right:12px;padding:8px 14px;border:1px solid var(--accent);border-radius:980px;color:var(--accent);font-size:14px;font-weight:500;line-height:1;letter-spacing:-.224px;background:#ffffff;cursor:pointer;-webkit-transition:color .16s ease,background-color .16s ease,border-color .16s ease;transition:color .16s ease,background-color .16s ease,border-color .16s ease}.file-input::file-selector-button{margin-right:12px;padding:8px 14px;border:1px solid var(--accent);border-radius:980px;color:var(--accent);font-size:14px;font-weight:500;line-height:1;letter-spacing:-.224px;background:#ffffff;cursor:pointer;transition:color .16s ease,background-color .16s ease,border-color .16s ease}.file-input:hover::-webkit-file-upload-button{background:rgba(0,113,227,.08)}.file-input:hover::file-selector-button{background:rgba(0,113,227,.08)}.ghost-button,.icon-button,.primary-button{display:inline-flex;justify-content:center;align-items:center;min-height:36px;padding:8px 18px;border-radius:980px;font-size:17px;font-weight:400;line-height:1;letter-spacing:-.374px;transition:opacity .16s ease,background-color .16s ease,color .16s ease,border-color .16s ease}.primary-button{font-weight:500;border:1px solid transparent;color:#ffffff;background:var(--accent)}.ghost-button{font-weight:500;border:1px solid var(--accent);color:var(--accent);background:transparent}.ghost-button.danger{border-color:rgba(255,59,48,.35);color:var(--danger)}.icon-button{min-width:36px;padding:0;border:0;border-radius:50%;color:rgba(255,255,255,.85);font-weight:500;background:rgba(255,255,255,.12)}.ghost-button:hover,.icon-button:hover,.primary-button:hover{opacity:.88}.ghost-button:disabled,.icon-button:disabled,.primary-button:disabled{opacity:.5;cursor:not-allowed}.card-grid{display:grid;grid-gap:20px;gap:20px}.coffee-card{overflow:hidden}.card-main{display:grid;width:100%;padding:0;border:0;text-align:left;background:transparent}.card-image{position:relative;min-height:180px;background:var(--surface-subtle)}.coffee-card .card-image:first-child{border-top-left-radius:24px;border-top-right-radius:24px;overflow:hidden}.card-image img,.detail-image img{object-fit:cover}.placeholder-surface{display:grid;place-items:center;color:var(--text-tertiary);font-size:14px;font-weight:400}.card-copy{display:grid;grid-gap:8px;gap:8px;padding:22px 24px 18px}.card-copy.no-image{padding-top:24px}.card-copy h3{font-size:21px;font-weight:700;line-height:1.19;letter-spacing:.231px}.card-copy small{color:var(--text-tertiary);font-size:12px;line-height:1.33;letter-spacing:-.12px}.card-row{display:flex;gap:8px;justify-content:space-between;align-items:flex-start}.badge{padding:4px 10px;border-radius:980px;color:var(--accent);font-size:12px;font-weight:600;line-height:1.33;letter-spacing:-.12px;border:1px solid rgba(0,113,227,.22);background:transparent}.card-actions{display:flex;align-items:center;flex-wrap:nowrap;gap:10px;padding:0 24px 24px}.card-action-button{flex:1 1;min-width:0;padding:8px 0}.card-action-button i{font-size:16px}.modal-backdrop{position:fixed;inset:0;display:grid;align-items:end;padding:18px;overflow-y:auto;background:rgba(0,0,0,.48);z-index:50;opacity:0;transition:opacity .22s ease}.modal-backdrop.is-open{opacity:1}.modal-backdrop.is-closing{pointer-events:none}.modal-panel{display:flex;flex-direction:column;width:min(100%,760px);min-width:0;max-height:88vh;margin:0 auto;overflow:hidden;box-shadow:var(--shadow-card);opacity:0;transform:translateY(22px) scale(.98);transition:opacity .22s ease,transform .26s cubic-bezier(.22,1,.36,1)}.modal-backdrop.is-open .modal-panel{opacity:1;transform:translateY(0) scale(1)}.modal-header{display:flex;flex-shrink:0;justify-content:space-between;align-items:center;padding:18px 20px;color:#ffffff;background:var(--surface-dark)}.modal-header h2{font-size:21px;font-weight:600;line-height:1.19;letter-spacing:.231px;color:#ffffff}.modal-body{min-height:0;min-width:0;flex:1 1 auto;padding:20px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:var(--surface)}.detail-image{position:relative;min-height:220px;overflow:hidden;border-radius:20px}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-label{display:block;margin-bottom:4px;font-size:12px;font-weight:600;line-height:1.33;letter-spacing:-.12px;text-transform:uppercase}.inline-link{color:var(--accent-link);font-size:14px;line-height:1.43;letter-spacing:-.224px}.inline-link:hover{text-decoration:underline}.map-embed{overflow:hidden;border-radius:20px}.inline-image-preview{display:flex;gap:12px;align-items:center;margin-bottom:12px}.inline-image-preview img{border-radius:18px;object-fit:cover}.checkbox-row{display:flex;gap:8px;align-items:center;color:var(--text-secondary);font-size:14px}.rating-input{display:flex;gap:8px;flex-wrap:wrap}.rating-display{display:flex;gap:4px;align-items:center}.rating-display--sm{font-size:14px}.rating-display--md{font-size:18px}.rating-display__star{color:rgba(255,214,10,.28);line-height:1}.rating-display__star.is-filled{color:#ffd60a}.rating-chip{display:grid;place-items:center;width:40px;height:40px;border:0;border-radius:0;color:var(--text-tertiary);font-size:1.5rem;background:transparent}.rating-chip.is-filled{color:#ffd60a;background:transparent}.step-list{display:flex;gap:10px;flex-wrap:wrap}.step-chip{display:inline-flex;gap:8px;align-items:center;padding:10px 14px;border-radius:980px;color:#ffffff;background:var(--surface-dark-2)}.bottom-nav{--nav-columns:3;--nav-gap:8px;--nav-pad:8px;position:fixed;right:calc(16px + env(safe-area-inset-right));bottom:calc(16px + env(safe-area-inset-bottom));left:calc(16px + env(safe-area-inset-left));display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--nav-gap);gap:var(--nav-gap);padding:var(--nav-pad);border-radius:30px;background:var(--nav-bg);border:1px solid rgba(255,255,255,.72);box-shadow:var(--shadow-card);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);overflow:hidden}.bottom-nav__indicator{position:absolute;top:var(--nav-pad);bottom:var(--nav-pad);left:var(--nav-pad);width:calc((100% - (var(--nav-pad) * 2) - (var(--nav-gap) * (var(--nav-columns) - 1))) / var(--nav-columns));border-radius:22px;transform:translateX(calc(var(--active-index, 0) * (100% + var(--nav-gap))));transition:transform .4s cubic-bezier(.22,1,.36,1),background-color .18s ease;will-change:transform}.bottom-nav__indicator:before{content:"";position:absolute;inset:0;border-radius:inherit;background:rgba(0,113,227,.92);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);transform:scale(1)}.bottom-nav.is-bubbling .bottom-nav__indicator:before{animation:bottom-nav-bubble .46s cubic-bezier(.22,1,.36,1)}.bottom-nav__item{position:relative;display:grid;place-items:center;min-height:48px;padding:0 12px;border-radius:22px;color:var(--text-tertiary);font-size:12px;font-weight:500;line-height:1.33;letter-spacing:-.12px;z-index:1;transition:color .16s ease,background-color .16s ease,transform .16s ease}.bottom-nav__item:hover{color:var(--text)}.bottom-nav__item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.bottom-nav__item.is-active{color:#ffffff;transform:translateY(-1px)}.bottom-nav__label{transform:translateY(-1px)}@keyframes bottom-nav-bubble{0%{transform:scale(1)}45%{transform:scale(.9,.84)}72%{transform:scale(.96,.94)}to{transform:scale(1)}}.empty-state{padding:24px;color:var(--text-secondary);text-align:center}.error-text{color:var(--danger);font-size:12px;font-weight:600;line-height:1.33;letter-spacing:-.12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (min-width:720px){.page-content{padding-top:32px}.split-grid,.toolbar-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.split-grid{align-items:end}.split-grid--align-start{align-items:start}.card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.bottom-nav{left:50%;right:auto;width:min(520px,calc(100vw - 32px - env(safe-area-inset-left) - env(safe-area-inset-right)));transform:translateX(-50%)}.modal-backdrop{align-items:center}}@media (min-width:980px){.card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (prefers-reduced-motion:reduce){.bottom-nav__indicator,.bottom-nav__item,.modal-backdrop,.modal-panel,.search-section__chevron,.search-section__content{transition:none}.bottom-nav.is-bubbling .bottom-nav__indicator:before{animation:none}}.break{white-space:pre-wrap}