 .like-control{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:7px!important;width:auto!important;min-width:76px!important;margin:12px 16px 16px!important;padding:9px 13px!important;border:1px solid rgba(22,53,71,.22)!important;border-radius:999px!important;background:#f3dfc5!important;color:#173547!important;font:800 15px Assistant,Arial,sans-serif!important;box-shadow:0 4px 0 rgba(22,53,71,.1)!important;cursor:pointer!important;transition:transform .18s ease,background .18s ease,color .18s ease!important}.like-control:hover:not(:disabled){transform:translateY(-2px);background:#efaa5a!important}.like-control.active{background:#e66745!important;border-color:#e66745!important;color:#fff!important}.like-control:disabled{cursor:default!important;opacity:1!important}.like-control.pending{opacity:.65!important}.like-heart{font-size:20px;line-height:1}.guide-level-picker,.deals-filters{display:flex;flex-wrap:wrap;gap:9px;margin:0 0 18px}.guide-level-choice,.deals-filter{border:1px solid rgba(22,53,71,.2);border-radius:999px;background:#fffdf9;color:#173547;padding:9px 14px;font:800 14px Assistant,Arial,sans-serif;cursor:pointer;transition:.18s}.guide-level-choice:hover,.guide-level-choice.active,.deals-filter:hover,.deals-filter.active{background:#efaa5a;border-color:#efaa5a;color:#173547;transform:translateY(-2px)}.guide-level-note{margin:0 0 20px;padding:12px 14px;border-radius:8px;background:rgba(239,170,90,.16);color:#173547;font:700 15px/1.5 Assistant,Arial,sans-serif}.bean-visual{overflow:hidden!important;background:#2e4a55!important}.bean-visual img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.04);transition:opacity .25s ease,transform .35s ease}.bean-visual img.changing{opacity:.35;transform:scale(.96)}.deals-summary{margin:-4px 0 18px;color:#55707d;font:700 15px Assistant,Arial,sans-serif}.deal-category{display:inline-block;margin:8px 0 0;padding:4px 8px;border-radius:999px;background:#f3dfc5;color:#173547;font:800 12px Assistant,Arial,sans-serif}
.upload-brew-details{margin-top:16px;padding:12px 14px;border-radius:8px;border:1px solid rgba(43,110,143,.24);background:#fffdf9}
.drop-icon{display:block;width:78px;height:78px;object-fit:contain;margin-bottom:8px}
 .upload-brew-details summary{cursor:pointer;display:block;font-weight:800;font-size:18px;line-height:1.2}
 .upload-brew-details-content{margin-top:10px}
 .brew-details-fields{display:grid;gap:10px}
 .brew-detail{margin-top:0}
 @media(max-width:700px){
   .upload-brew-details{padding:10px 12px}
 }

/* Owner-only controls inside the image lightbox. */
.lightbox-owner-tools{width:min(620px,92vw);margin:12px auto 0;text-align:right}
.lightbox-edit-actions{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}
.lightbox-edit-actions button,.lightbox-edit-form-actions button{border:1px solid rgba(255,255,255,.45);border-radius:999px;background:rgba(255,255,255,.12);color:#fff;padding:8px 13px;font:800 14px Assistant,system-ui,sans-serif;cursor:pointer}
.edit-action-button{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.edit-action-button>.edit-action-icon{display:block;width:16px;height:16px;flex:0 0 16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.edit-action-label{display:inline-block;line-height:1.1}
.lightbox-edit-actions button:hover,.lightbox-edit-form-actions button:hover{background:#2b6e8f}
.lightbox-missing-info-actions{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:8px}
.lightbox-missing-info-actions[hidden]{display:none!important}
.lightbox-missing-info-actions button{border:1px solid rgba(244,181,108,.58);border-radius:999px;background:rgba(239,170,90,.18);color:#fff;padding:8px 13px;font:800 14px Assistant,system-ui,sans-serif;cursor:pointer}
.lightbox-missing-info-actions button:hover{background:#efaa5a;color:#163547}
.lightbox-edit-status{min-height:20px;margin:7px 0;color:#f4c67b;font-weight:700;text-align:center}
.lightbox-edit-form{margin-top:10px;padding:12px;border:1px solid rgba(255,255,255,.25);border-radius:9px;background:rgba(18,42,53,.86)}
.lightbox-edit-form label{display:block;color:#fff;font-weight:800}
.lightbox-edit-form input,.lightbox-edit-form select,.lightbox-edit-form textarea{display:block;width:100%;margin-top:7px;border:1px solid rgba(255,255,255,.35);border-radius:7px;background:#fffdf9;color:#163547!important;-webkit-text-fill-color:#163547;padding:9px;font:600 15px Assistant,system-ui,sans-serif;box-sizing:border-box}
.lightbox-edit-form input::placeholder{color:#687d86;opacity:1;-webkit-text-fill-color:#687d86}
.lightbox-edit-form-actions{display:flex;justify-content:center;gap:8px;margin-top:10px}
.lightbox-edit-form-actions button[type=submit]{background:#efaa5a;color:#163547}
.lightbox-edit-form .brew-detail{color:#fff}
.lightbox-edit-form input.brew-detail,.lightbox-edit-form .brew-detail input,.lightbox-edit-form .brew-detail select{margin-top:5px;background:#fffdf9;color:#163547!important;-webkit-text-fill-color:#163547}
.lightbox-edit-form .brew-detail select option{background:#fffdf9;color:#163547}
/* Explicit edit-field theme: values must remain readable against the light
   controls even when the surrounding lightbox/browser supplies dark styles. */
#lightboxDetailsForm #lightboxEditDetailsFields .lightbox-edit-control,
#lightboxDetailsForm #lightboxEditDetailsFields .lightbox-edit-control:focus,
#lightboxDetailsForm #lightboxEditDetailsFields .lightbox-edit-control:active{
  background-color:#fff!important;
  color:#17232b!important;
  -webkit-text-fill-color:#17232b!important;
  opacity:1!important;
  color-scheme:light;
}
#lightboxDetailsForm #lightboxEditDetailsFields .lightbox-edit-control::placeholder{
  color:#61747d!important;
  -webkit-text-fill-color:#61747d!important;
  opacity:1!important;
}
#lightboxDetailsForm #lightboxEditDetailsFields .lightbox-edit-control option{
  background:#fff!important;
  color:#17232b!important;
}
.lightbox-edit-metadata{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:10px 0}
.lightbox-edit-metadata label{display:block;color:#fff;font-weight:800}
.lightbox-edit-metadata input,.lightbox-edit-metadata select{display:block;width:100%;margin-top:7px;border:1px solid rgba(255,255,255,.35);border-radius:7px;background:#fffdf9;color:#163547;padding:9px;font:600 15px Assistant,system-ui,sans-serif;box-sizing:border-box}
.lightbox-edit-metadata .lightbox-edit-preset-label{grid-column:1/-1;order:-1}
.lightbox-edit-metadata .lightbox-edit-preset-select{border-color:#efaa5a;box-shadow:0 0 0 2px rgba(239,170,90,.12)}
@media(max-width:600px){.lightbox-edit-metadata{grid-template-columns:1fr}}
.section-heading-stacked{display:block!important}
.section-heading-stacked>div{display:block!important}
.section-heading-stacked .hub-intro{display:block;margin:9px 0 0;max-width:62ch}
.lightbox-edit-form-actions button[type=submit]:disabled{opacity:.45;filter:grayscale(.55);cursor:not-allowed;box-shadow:none;pointer-events:none}
#coffeeRoastField,#coffeeRoastDateField{display:inline-block;vertical-align:top;width:calc(50% - 7px);box-sizing:border-box}
#coffeeRoastDateField{margin-inline-start:10px}
@media(max-width:700px){#coffeeRoastField,#coffeeRoastDateField{display:block;width:100%;margin-inline-start:0}}

/* Keep searchable hardware pickers inside the form instead of delegating to
   the browser's floating datalist popup. */
 .brew-combobox-field{position:relative;z-index:2}
.brew-combobox-field:focus-within{z-index:1000}
.brew-combobox-field .brew-combobox-input{position:relative;z-index:2}
.brew-combobox-menu{position:absolute;top:calc(100% - 2px);right:0;left:0;z-index:1001;max-height:min(230px,35vh);overflow:auto;border:1px solid rgba(22,53,71,.26);border-radius:0 0 8px 8px;background:#fffdf9;box-shadow:0 8px 18px rgba(22,53,71,.18)}
.brew-combobox-menu[data-placement="above"]{top:auto;bottom:calc(100% - 2px);border-radius:8px 8px 0 0;box-shadow:0 -8px 18px rgba(22,53,71,.18)}
.brew-combobox-menu[hidden]{display:none}
.brew-combobox-option{display:block;width:100%;padding:9px 11px;border:0;border-bottom:1px solid rgba(22,53,71,.09);background:transparent;color:var(--ink);font:600 15px Assistant,Arial,sans-serif;text-align:right;cursor:pointer}
.brew-combobox-option:hover,.brew-combobox-option:focus-visible{background:#e3f0f0;outline:0}
.name-field{position:relative}
.bean-name-menu{position:absolute;top:calc(100% - 2px);right:0;left:0;z-index:1001;max-height:min(220px,35vh);overflow:auto;border:1px solid rgba(22,53,71,.26);border-radius:0 0 8px 8px;background:#fffdf9;box-shadow:0 8px 18px rgba(22,53,71,.18)}
.bean-name-menu[hidden]{display:none}
.bean-name-option{display:block;width:100%;padding:9px 11px;border:0;border-bottom:1px solid rgba(22,53,71,.09);background:transparent;color:var(--ink);font:600 15px Assistant,Arial,sans-serif;text-align:right;cursor:pointer}
.bean-name-option:hover,.bean-name-option:focus-visible{background:#e3f0f0;outline:0}
.brew-number-stepper button{touch-action:manipulation;user-select:none;-webkit-user-select:none}
.bean-roast-field{position:relative;margin-top:16px;padding:12px 14px 14px;border:1px solid rgba(43,110,143,.28);border-radius:12px;background:linear-gradient(135deg,#eef7f7 0%,#fffdf9 100%);box-shadow:0 5px 0 rgba(22,53,71,.08);overflow:hidden}
.bean-roast-field::before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:linear-gradient(180deg,#efaa5a,#2b6e8f);border-radius:12px 0 0 12px}
.bean-roast-field>span{position:relative;margin:0 0 7px;padding-inline-start:3px;color:#163547;font:800 15px/1.2 Rubik,Assistant,Arial,sans-serif}
.bean-roast-field>span b{font:800 12px Assistant,Arial,sans-serif;color:#a34f35}
.bean-roast-field select{display:block;width:100%;min-height:46px;margin-top:0;padding:10px 14px 10px 42px;border:1px solid rgba(43,110,143,.34);border-radius:9px;background-color:#fffdf9;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m3 6 5 5 5-5' fill='none' stroke='%232b6e8f' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.8'/%3E%3C/svg%3E");background-position:left 14px center;background-repeat:no-repeat;background-size:16px;color:#163547;font:700 16px Assistant,Arial,sans-serif;cursor:pointer;appearance:none;-webkit-appearance:none;outline:none;transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}
.bean-roast-field select:hover{border-color:#2b6e8f;background-color:#f8fcfc}
.bean-roast-field select:focus-visible{border-color:#2b6e8f;box-shadow:0 0 0 3px rgba(43,110,143,.14)}
.bean-roast-field select option{font:600 16px Assistant,Arial,sans-serif;background:#fffdf9;color:#163547}
.bean-roast-field input[type=date]{display:block;width:100%;min-height:46px;margin-top:0;padding:10px 14px;border:1px solid rgba(43,110,143,.34);border-radius:9px;background:#fffdf9;color:#163547;font:700 16px Assistant,Arial,sans-serif;box-sizing:border-box;outline:none}
.bean-roast-field input[type=date]:focus-visible{border-color:#2b6e8f;box-shadow:0 0 0 3px rgba(43,110,143,.14)}
@media(max-width:700px){.bean-roast-field{margin-top:14px;padding:11px 12px 13px}.bean-roast-field select{min-height:48px;font-size:16px}}
.deals-caveat{margin:-10px 0 18px;color:#7b5b3c;font:700 14px/1.4 Assistant,Arial,sans-serif}

/* Reuse the daily-loader wordmark structure in the header and keep the cup
   itself transparent, without a painted tile or extra CSS shadow. */
.site-header .brand{direction:rtl;gap:12px}
.site-header .brand-mark{display:block;width:46px;height:46px;flex:0 0 46px;object-fit:contain;background:transparent!important;box-shadow:none!important}
.site-header .brand>strong{display:block;min-width:0;color:#163547;font:900 18px/.83 Rubik,Arial,sans-serif;letter-spacing:-.06em;text-align:right}
.site-header .brand>strong i{color:#c96e4d;font-style:normal}
@media(max-width:700px){
  .site-header .brand-mark{width:37px;height:37px;flex-basis:37px}
  .site-header .brand>strong{font-size:16px}
}

/* Optional sensory notes: sliders stay compact, while the overall score uses
   the same coffee-cup mark as the site identity. */
.taste-helper{margin:0 0 12px;color:#55707d;font-size:14px;font-weight:700;line-height:1.4}
.taste-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.taste-slider-field{display:grid;gap:8px;padding:11px 12px;border:1px solid rgba(43,110,143,.2);border-radius:9px;background:#fffdf9}
.taste-slider-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#163547;font:800 14px Assistant,Arial,sans-serif}
.taste-slider-heading output{color:#55707d;font-size:12px;white-space:nowrap}
.taste-slider-field input[type=range]{width:100%;height:24px;margin:0;padding:0;appearance:none;-webkit-appearance:none;direction:ltr;background:transparent;cursor:pointer}
.taste-slider-field input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:999px;background:linear-gradient(to right,#2b6e8f 0 var(--taste-progress,50%),#d9edf1 var(--taste-progress,50%) 100%)}
.taste-slider-field input[type=range]::-moz-range-track{height:6px;border-radius:999px;background:#d9edf1}
.taste-slider-field input[type=range]::-moz-range-progress{height:6px;border-radius:999px;background:#2b6e8f}
.taste-slider-field input[type=range]::-webkit-slider-thumb{width:18px;height:18px;margin-top:-6px;appearance:none;-webkit-appearance:none;border:2px solid #fff;border-radius:50%;background:#2b6e8f;box-shadow:0 1px 4px rgba(22,53,71,.28)}
.taste-slider-field input[type=range]::-moz-range-thumb{width:14px;height:14px;border:2px solid #fff;border-radius:50%;background:#2b6e8f;box-shadow:0 1px 4px rgba(22,53,71,.28)}
.taste-score-field{grid-column:1/-1;min-width:0;width:100%;min-height:96px;box-sizing:border-box;margin:0;padding:14px 12px 16px;border:1px solid rgba(43,110,143,.2);border-radius:9px;background:#fffdf9;overflow:hidden}
.taste-score-field legend{display:block;max-width:100%;box-sizing:border-box;padding:0 5px;color:#163547;font:800 14px Assistant,Arial,sans-serif;white-space:normal;overflow-wrap:anywhere}
.taste-score-picker{display:flex;align-items:center;justify-content:center;gap:5px;flex-wrap:nowrap;max-width:100%;direction:ltr}
.taste-score-button{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;padding:3px;border:1px solid rgba(43,110,143,.2);border-radius:8px;background:#edf5f4;cursor:pointer;transition:.18s}
.taste-score-button img{width:28px;height:28px;object-fit:contain;opacity:.34;filter:grayscale(.7)}
.taste-score-button:hover,.taste-score-button[aria-pressed=true]{border-color:#efaa5a;background:#f8ead8;transform:translateY(-2px)}
.taste-score-button[aria-pressed=true] img{opacity:1;filter:none}
.lightbox-taste{width:min(620px,92vw);margin:10px auto 0;padding:10px 12px;border:1px solid rgba(255,255,255,.24);border-radius:10px;background:rgba(12,35,52,.32)}
.lightbox-taste-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;color:#f4b56c;font:800 16px Rubik,Assistant,Arial,sans-serif;cursor:pointer;list-style:none}
.lightbox-taste-title::-webkit-details-marker{display:none}
.lightbox-save-preset{display:block;width:100%;margin:12px 0 0;padding:9px 14px;border:1px solid rgba(244,181,108,.58);border-radius:999px;background:rgba(239,170,90,.94);color:#163547;font:800 14px Assistant,Arial,sans-serif;cursor:pointer;transition:transform .18s ease,background .18s ease,border-color .18s ease}.lightbox-save-preset:hover:not(:disabled),.lightbox-save-preset:focus-visible{border-color:#ffd89c;background:#f6bd73;transform:translateY(-2px);outline:none}.lightbox-save-preset:disabled{cursor:wait;opacity:.65}.lightbox-save-preset[hidden]{display:none!important}.lightbox-save-preset.is-saved{border-color:#c9e4b8;background:#d8f0c9;color:#315e53}
.lightbox-taste .lightbox-taste-score{display:none!important}
#lightboxTaste .taste-score-field legend{display:none!important}
.lightbox-taste-title::after{content:'+';display:grid;place-items:center;width:22px;height:22px;border:1px solid rgba(244,181,108,.5);border-radius:50%;font:800 18px/1 Assistant,Arial,sans-serif}
.lightbox-taste[open] .lightbox-taste-title::after{content:'−'}
.lightbox-taste-content{padding-top:10px}
.lightbox-taste-rows{display:grid;gap:7px;color:#dbe8ec;font:800 14px Assistant,Arial,sans-serif}
.lightbox-taste-row,.lightbox-taste-score{display:flex;align-items:center;justify-content:space-between;gap:12px;line-height:1.35}
.lightbox-taste-row:not(:last-child),.lightbox-taste-score{padding-bottom:7px;border-bottom:1px solid rgba(255,255,255,.15)}
.lightbox-taste-row strong{color:#f4c67b;white-space:nowrap;font:400 14px/1.35 Assistant,Arial,sans-serif}
.lightbox-cups{display:inline-flex;align-items:center;gap:3px;direction:ltr}
.lightbox-cups img{width:23px;height:23px;object-fit:contain}
.lightbox-cups img.is-muted{opacity:.28;filter:grayscale(1)}
.lightbox-edit-form .taste-fields{margin-top:12px}
/* Keep the sensory editor's labels and values at the same readable scale as
   the preparation editor. The base taste controls are intentionally compact
   for the upload form, but the owner edit form should not shrink them. */
.lightbox-edit-form#lightboxTasteForm .taste-slider-heading{font:800 16px/1.25 Assistant,Arial,sans-serif}
.lightbox-edit-form#lightboxTasteForm .taste-slider-heading output{font:600 16px/1.25 Assistant,Arial,sans-serif}
.lightbox-edit-form#lightboxTasteForm .taste-score-field{min-width:0;max-width:100%;width:100%;overflow:hidden}
.lightbox-edit-form#lightboxTasteForm .taste-score-field legend{display:block;box-sizing:border-box;width:100%;max-width:100%;margin:0;padding-inline:0;font:800 16px/1.25 Assistant,Arial,sans-serif;white-space:normal;overflow-wrap:anywhere}
@media(max-width:700px){.taste-fields{grid-template-columns:1fr}.taste-score-picker{gap:4px}.taste-score-button{flex-basis:34px;width:34px;height:34px}.taste-score-button img{width:26px;height:26px}.lightbox-taste-row,.lightbox-taste-score{align-items:flex-start;flex-direction:column;gap:4px}}

/* Keep each read-only taste value beside its label, including on narrow
   screens; the panel remains compact without stacking the pair. */
@media(max-width:700px){.lightbox-taste-row,.lightbox-taste-score{align-items:center;flex-direction:row;gap:12px}}

/* Signed-in account profile and in-app notifications. */
.profile-section{padding-top:74px;padding-bottom:86px;scroll-margin-top:72px}
.profile-auth-gate{padding:24px;border:1px solid rgba(43,110,143,.24);border-radius:12px;background:#eef6f6;text-align:right;font-weight:700}
.profile-auth-gate p{margin:0 0 14px;color:#355b6a}
.profile-login-link{display:inline-block;padding:10px 18px;border-radius:999px;background:#2b6e8f;color:#fff;text-decoration:none;font-weight:800}
.profile-content{display:grid;gap:16px;max-width:900px}
.profile-card{padding:24px;border:1px solid rgba(22,53,71,.16);border-radius:14px;background:#fffdf9;box-shadow:7px 8px 0 rgba(22,53,71,.07)}
.profile-equipment-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px;padding:16px;border:1px solid rgba(43,110,143,.18);border-radius:12px;background:#f4faf9}.profile-equipment-form[hidden],.profile-equipment-form[aria-hidden="true"]{display:none!important}.profile-equipment-form h4{grid-column:1/-1;margin:0;color:#163547;font:800 20px/1.1 Rubik}.profile-equipment-form .profile-equipment-field{margin:0}.profile-equipment-actions{grid-column:1/-1;display:flex;gap:10px;justify-content:flex-start}.profile-equipment-list{display:grid;gap:10px;margin-top:18px}.profile-equipment-row{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:74px;padding:12px 14px;border:1px solid rgba(22,53,71,.13);border-radius:10px;background:#fff}.profile-equipment-row strong,.profile-equipment-row span{display:block}.profile-equipment-row span{margin-top:3px;color:#60717b;font-size:.9rem}.profile-equipment-row-actions{display:flex;gap:7px;flex:0 0 auto}.public-profile-page{max-width:960px!important;min-height:calc(100vh - 180px);padding-top:58px;padding-bottom:86px}.public-profile-card{padding:28px;border:1px solid rgba(22,53,71,.16);border-radius:16px;background:linear-gradient(145deg,#fffdf9,#f3faf9);box-shadow:10px 11px 0 rgba(22,53,71,.08)}.public-profile-back{display:inline-flex;margin-bottom:24px;color:#2b6e8f;font-weight:800;text-decoration:none}.public-profile-identity{display:flex;align-items:center;gap:16px}.public-profile-avatar .inline-profile-avatar{width:78px;height:78px}.public-profile-identity h1{margin:0;color:#163547;font:900 34px/1.05 Rubik}.public-profile-identity p{margin:6px 0 0;color:#60717b;font-weight:700}.public-profile-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:26px}.public-profile-stats div{padding:14px;border-radius:10px;background:#e4f1f1;text-align:center}.public-profile-stats strong,.public-profile-stats span{display:block}.public-profile-stats strong{color:#163547;font:900 24px Rubik}.public-profile-stats span{margin-top:4px;color:#55707d;font-weight:700}.public-profile-equipment{margin-top:28px;padding-top:24px;border-top:1px solid rgba(22,53,71,.14)}.public-profile-equipment h2{margin:0 0 14px;color:#163547;font:800 24px Rubik}.public-profile-equipment>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.public-equipment-item{padding:16px;border:1px solid rgba(22,53,71,.13);border-radius:10px;background:#fff}.public-equipment-item h3{margin:0 0 8px;color:#163547;font:800 19px Rubik}.public-equipment-item p{margin:5px 0;color:#55707d;line-height:1.35}.profile-name-link{cursor:pointer}.profile-name-link:hover{text-decoration:underline}.lightbox-image-action{transition:transform .18s ease,box-shadow .18s ease,background .18s ease}.lightbox-image-action:hover{transform:translateY(-3px);box-shadow:0 8px 18px rgba(0,0,0,.22)}
@media(max-width:700px){.profile-equipment-form{grid-template-columns:1fr}.profile-equipment-actions{flex-direction:column}.profile-equipment-actions button{width:100%}.profile-equipment-row{align-items:flex-start;flex-direction:column}.profile-equipment-row-actions{align-self:flex-start}.public-profile-page{padding-top:34px;padding-bottom:56px}.public-profile-card{padding:18px}.public-profile-identity h1{font-size:28px}.public-profile-stats{grid-template-columns:repeat(2,1fr)}.public-profile-equipment>div{grid-template-columns:1fr}}
.public-profile-stats{grid-template-columns:repeat(2,minmax(0,220px));}
.profile-about-form{display:grid;gap:10px;margin-top:18px;padding-top:18px;border-top:1px solid rgba(22,53,71,.12)}
.profile-about-form[hidden],.profile-public-name-form[hidden]{display:none!important}
.profile-details-box{margin-top:20px;padding:16px;border:1px solid rgba(22,53,71,.13);border-radius:12px;background:rgba(255,255,255,.58)}
.profile-details-view[hidden],.profile-details-form[hidden]{display:none!important}
.profile-details-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.profile-details-view .profile-field-summary-label{margin:0;color:#55707d;font:900 15px/1.2 Assistant,Arial,sans-serif}
.profile-details-view .profile-field-summaries{margin-top:12px}
.profile-details-view .profile-field-summary{padding:10px 0;border:0;border-top:1px solid rgba(22,53,71,.1);border-radius:0;background:transparent}
.profile-details-view .profile-field-summary:first-child{border-top:0}
.profile-details-form{display:grid;gap:12px}
.profile-details-form-fields{display:grid;gap:12px}
.profile-details-form label{display:grid;gap:7px;color:var(--ink);font:800 15px/1.3 Assistant,Arial,sans-serif}
.profile-details-form input,.profile-details-form textarea{width:100%;box-sizing:border-box;border:1px solid rgba(22,53,71,.2);border-radius:9px;background:#fffdf9;color:var(--ink);padding:10px 12px;font:600 16px/1.4 Assistant,Arial,sans-serif;outline:none}
.profile-details-form input:focus,.profile-details-form textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(43,110,143,.14)}
.profile-details-form textarea{resize:vertical;min-height:100px}
.profile-field-summaries{display:grid;gap:12px;margin-top:20px}
.profile-field-summary{padding:13px 14px;border:1px solid rgba(22,53,71,.13);border-radius:10px;background:rgba(255,255,255,.58)}
.profile-field-summary-label{display:block;margin-bottom:6px;color:#55707d;font:800 13px/1.2 Assistant,Arial,sans-serif}
.profile-field-summary-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}
.profile-field-summary-row strong,.profile-field-summary-row p{min-width:0;margin:0;color:var(--ink);font:800 17px/1.35 Assistant,Arial,sans-serif;overflow-wrap:anywhere}
.profile-field-summary-row p{font-weight:600;white-space:pre-wrap}
.profile-inline-edit{display:inline-grid;place-items:center;flex:0 0 auto;width:36px;height:36px;padding:0;border:1px solid rgba(43,110,143,.3);border-radius:50%;background:#fffdf9;color:var(--blue);cursor:pointer;transition:transform .18s ease,background .18s ease,border-color .18s ease}
.profile-inline-edit:hover,.profile-inline-edit:focus-visible{border-color:var(--blue);background:var(--sky);transform:translateY(-2px);outline:0}
.profile-inline-edit svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}
.profile-edit-form-actions{display:flex;align-items:center;justify-content:flex-start;gap:8px;flex-wrap:wrap}
.profile-edit-form-actions button{min-height:42px}
.profile-about-form label{display:grid;gap:7px;color:#263b45;font:800 16px/1.25 Assistant,Arial,sans-serif}
.profile-about-form textarea{box-sizing:border-box;width:100%;min-height:96px;resize:vertical;padding:10px 12px;border:1px solid rgba(43,110,143,.3);border-radius:9px;background:#fffdf9;color:#17232b;-webkit-text-fill-color:#17232b;font:600 16px/1.45 Assistant,Arial,sans-serif;direction:rtl}
.profile-about-form textarea:focus{border-color:#2b6e8f;outline:3px solid rgba(43,110,143,.12)}
.public-profile-about,.public-profile-settings{margin-top:25px;padding-top:21px;border-top:1px solid rgba(22,53,71,.14)}
.public-profile-about h2,.public-profile-settings h2{margin:0 0 11px;color:#163547;font:800 23px Rubik}
.public-profile-about p{margin:0;color:#355b6a;font:600 17px/1.55 Assistant,Arial,sans-serif;white-space:pre-wrap}
.public-profile-settings>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.public-profile-setting{display:grid;gap:7px;padding:15px;border:1px solid rgba(22,53,71,.13);border-radius:10px;background:#fff}
.public-profile-setting h3{margin:0;color:#163547;font:800 19px Rubik}
.public-profile-setting p{margin:0;color:#55707d;font:600 15px/1.4 Assistant,Arial,sans-serif}
.public-profile-setting-creator{color:#71848b;font:700 13px/1.35 Assistant,Arial,sans-serif}
.public-profile-setting-actions{display:flex;justify-content:flex-start;margin-top:4px}
.public-profile-setting-save{min-height:36px;padding:7px 12px;border:1px solid rgba(43,110,143,.32);border-radius:7px;background:#f2f8f7;color:#2b6e8f;font:800 14px Assistant,Arial,sans-serif;cursor:pointer}
.public-profile-setting-save:hover:not(:disabled){background:#e3f1ef;transform:translateY(-1px)}
.public-profile-setting-save:disabled{opacity:.7;cursor:wait}
.public-profile-setting-save.is-saved{border-color:#8abf97;background:#eaf7ec;color:#347047;cursor:default}
.public-profile-gallery{margin-top:28px;padding-top:24px;border-top:1px solid rgba(22,53,71,.14)}
.public-profile-gallery h2{margin:0 0 14px;color:#163547;font:800 24px Rubik}
.public-profile-gallery-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.public-profile-gallery-grid .gallery-item{min-width:0}
.public-profile-gallery-grid .public-profile-gallery-card{padding:0;border-radius:10px;background:transparent;box-shadow:none}
.public-profile-gallery-grid .public-profile-gallery-card:hover{transform:translateY(-3px);box-shadow:none}
.public-profile-gallery-grid .public-profile-gallery-card .gallery-image{border-radius:10px}
.public-profile-gallery-empty{margin:0;padding:24px 16px;border:1px dashed rgba(43,110,143,.28);border-radius:10px;background:#f3f8f7;color:#55707d;font-weight:700;text-align:center}
.profile-preset-origin{display:block;margin-top:3px;color:#71848b;font:700 12px/1.3 Assistant,Arial,sans-serif}
.profile-gallery-card{overflow:hidden}
.profile-gallery-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:15px}
.profile-gallery-grid .profile-gallery-card-item{min-width:0;padding:0;border-radius:10px;background:transparent;box-shadow:none}
.profile-gallery-grid .profile-gallery-card-item:hover{transform:translateY(-3px);box-shadow:none}
.profile-gallery-grid .profile-gallery-card-item .gallery-image{border-radius:10px}
.profile-gallery-empty{margin:15px 0 0;padding:22px 16px;border:1px dashed rgba(43,110,143,.28);border-radius:10px;background:#f3f8f7;color:#55707d;font-weight:700;text-align:center}
.profile-preset-origin-link{color:#2b6e8f;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
.profile-preset-origin-link:hover,.profile-preset-origin-link:focus-visible{color:#c96e4d}
@media(max-width:700px){.public-profile-settings>div{grid-template-columns:1fr}.public-profile-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.public-profile-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-about-form textarea{font-size:15px}}
@media(max-width:700px){.profile-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.profile-email{font-size:13px}}
.profile-equipment-form .profile-equipment-field{display:block;margin:0;color:#263b45;font:800 16px/1.25 Assistant,Arial,sans-serif}
.profile-equipment-form .profile-equipment-field>span{display:block;margin:0 2px 7px}
.profile-equipment-form input,.profile-equipment-form select{box-sizing:border-box;width:100%;min-height:46px;border:1px solid rgba(43,110,143,.3);border-radius:9px;background:#fffdf9;color:#17232b;-webkit-text-fill-color:#17232b;padding:10px 12px;font:600 16px/1.2 Assistant,Arial,sans-serif;direction:rtl}
.profile-equipment-form input::placeholder{color:#7c8d91;opacity:1}
.profile-equipment-form select{padding-inline-start:36px;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m3 6 5 5 5-5' fill='none' stroke='%232b6e8f' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.8'/%3E%3C/svg%3E");background-position:left 12px center;background-repeat:no-repeat;background-size:16px;color-scheme:light;cursor:pointer}
.profile-equipment-form input:focus,.profile-equipment-form select:focus{outline:2px solid rgba(43,110,143,.2);border-color:var(--blue)}
.profile-equipment-form select option{background:#fffdf9;color:#17232b;font:600 16px Assistant,Arial,sans-serif}
.profile-identity{display:flex;align-items:center;gap:16px;min-width:0}
.profile-avatar-wrap{position:relative;display:grid;place-items:center;width:108px;height:108px;flex:0 0 108px;border-radius:50%;overflow:visible;background:#e3f0f0;color:#2b6e8f}
.profile-avatar{display:block;width:100%;height:100%;object-fit:cover}
.profile-avatar-wrap>.profile-avatar,.profile-avatar-wrap>.profile-avatar-art,.profile-avatar-wrap>.profile-avatar-generated,.profile-avatar-wrap>.profile-avatar-initials{border-radius:50%;overflow:hidden}
.profile-avatar[hidden],.profile-avatar-initials[hidden]{display:none}
.profile-avatar-initials{font:900 28px/1 Rubik,Arial,sans-serif}
.profile-identity h3{margin:0;color:#163547;font:900 28px/1 Rubik,Arial,sans-serif;overflow-wrap:anywhere}
.profile-identity p{margin:6px 0 0;color:#55707d;font-weight:700;overflow-wrap:anywhere}
.profile-name-line{display:flex;align-items:center;gap:9px;min-width:0}
.profile-name-line h3{min-width:0}
.profile-name-line .profile-inline-edit{width:32px;height:32px}
.profile-email-row{display:flex;align-items:baseline;justify-content:flex-start;gap:8px;margin:12px 0 0;padding-bottom:11px;border-bottom:1px solid rgba(22,53,71,.1);direction:rtl}
.profile-email-label{flex:0 0 auto;color:#163547;font:800 14px/1.35 Assistant,Arial,sans-serif}
.profile-email{margin:0;color:#55707d;font:700 14px/1.35 Assistant,Arial,sans-serif;overflow-wrap:anywhere;direction:ltr;text-align:right}
.profile-note{font-size:13px;font-weight:600!important}
.profile-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:22px}
.profile-stats div{display:grid;gap:4px;padding:12px;border-radius:9px;background:#edf5f4;text-align:center}
.profile-stats strong{color:#163547;font:900 24px/1 Rubik,Arial,sans-serif}
.profile-stats span{color:#55707d;font-size:13px;font-weight:800}
.profile-card-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.profile-card-heading h3{margin:5px 0 0;color:#163547;font:900 24px/1 Rubik,Arial,sans-serif}
.profile-secondary-button{padding:8px 12px;border:1px solid rgba(43,110,143,.3);border-radius:999px;background:#fff;color:#2b6e8f;font:800 13px Assistant,Arial,sans-serif;cursor:pointer}
.profile-secondary-button:hover{background:#edf5f4;border-color:#2b6e8f}
.profile-preferences{display:grid;gap:9px;margin-top:18px}
.profile-preferences label{display:flex;align-items:center;gap:9px;padding:11px 12px;border-radius:8px;background:#edf5f4;color:#163547;font-weight:800;cursor:pointer}
.profile-preferences input{width:18px;height:18px;accent-color:#2b6e8f}
.profile-status{min-height:19px;margin:10px 0 0;color:#2b6e8f;font-size:13px;font-weight:800}
.profile-notifications{display:grid;gap:8px;margin-top:12px}
.profile-notification{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:10px;padding:13px;border-radius:10px;background:#f5f0e8;color:#355b6a}
.profile-notification.unread{background:#e3f0f0;box-shadow:inset 3px 0 #efaa5a}
.profile-notification-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#2b6e8f;color:#fff;font-size:14px}
.profile-notification p{min-width:0;margin:0;font-weight:700;line-height:1.4;overflow-wrap:anywhere}
.profile-notification time{color:#71858b;font-size:12px;white-space:nowrap}
.profile-empty-notifications{margin:0;padding:16px;border-radius:9px;background:#f5f0e8;color:#55707d;font-weight:700}
@media(max-width:700px){
 .profile-section{padding-top:54px;padding-bottom:62px}
 .profile-card{padding:18px}
 .profile-identity h3{font-size:23px}
 .profile-avatar-wrap{width:88px;height:88px;flex-basis:88px}
 .profile-avatar-initials{font-size:29px}
 .profile-stats{grid-template-columns:repeat(2,1fr)}
 .profile-card-heading{align-items:flex-start;flex-direction:column}
 .profile-notification{grid-template-columns:1fr;grid-template-areas:"body" "meta";gap:10px;padding:14px}
 .profile-notification-icon{grid-area:body;position:absolute;inset-inline-end:14px;top:14px}
 .profile-notification p{grid-area:body;width:100%;box-sizing:border-box;padding-inline-end:40px}
 .profile-notification-meta{grid-area:meta;display:flex;align-items:center;justify-content:space-between;width:100%;min-width:0;margin-top:2px}
 .profile-notification time{grid-column:auto;white-space:nowrap}
}

/* Keep preparation and taste choices visually distinct in both upload and
   edit flows, and keep every taste value readable on the light backgrounds. */
#brewDetailsSection + #tasteProfileSection{margin-top:18px}
#tasteProfileSection{border-color:rgba(43,110,143,.24);background:#fffdf9}
.taste-fields .taste-slider-field,.taste-fields .taste-slider-heading,.taste-fields .taste-score-field,.taste-fields .taste-score-field legend{color:#163547!important}
.lightbox-edit-form .taste-slider-field,.lightbox-edit-form .taste-slider-field strong,.lightbox-edit-form .taste-slider-heading,.lightbox-edit-form .taste-score-field legend{color:#163547!important;-webkit-text-fill-color:#163547}
.taste-fields .taste-slider-heading output{color:#55707d!important;-webkit-text-fill-color:#55707d}
.taste-fields .taste-slider-field input[type=range]{color:#163547!important}
.taste-fields .taste-score-button{color:#163547!important}
.lightbox-edit-panels,.lightbox-edit-forms{display:grid;gap:12px}
.lightbox-edit-forms{grid-template-columns:1fr}
.lightbox-info-panels{display:grid;grid-template-columns:1fr;gap:12px;width:min(620px,92vw);margin:10px auto 0;align-items:start}
.lightbox-info-panels>.lightbox-brew-details,.lightbox-info-panels>.lightbox-taste{width:auto;margin:0}
.lightbox-edit-panel{padding:11px;border:1px solid rgba(255,255,255,.24);border-radius:9px;background:rgba(255,253,249,.08)}
.lightbox-edit-panel h5{margin:0 0 8px;color:#f4b56c;font:800 16px/1.2 Rubik,Assistant,Arial,sans-serif}
.lightbox-edit-panel .taste-fields{margin-top:0}
.lightbox-edit-panel .taste-slider-field,.lightbox-edit-panel .taste-score-field{color:#163547!important;background:#fffdf9}
.lightbox-edit-panel .taste-slider-heading{color:#163547!important}
.lightbox-edit-panel .taste-slider-heading output{color:#55707d!important;-webkit-text-fill-color:#55707d}
.lightbox-edit-panel .taste-score-field legend{color:#163547!important}

/* Taste edit fields keep their labels outside the light value cards so the
   titles remain readable against the dark edit form. */
.lightbox-edit-form#lightboxTasteForm .taste-edit-field-group{display:grid;gap:6px;min-width:0}
.lightbox-edit-form#lightboxTasteForm .taste-edit-title,
.lightbox-edit-form#lightboxTasteForm .taste-edit-title strong{display:block;color:#fff!important;-webkit-text-fill-color:#fff;font:800 16px/1.25 Assistant,Arial,sans-serif}
.lightbox-edit-form#lightboxTasteForm .taste-edit-field-info{min-width:0}
.lightbox-edit-form#lightboxTasteForm .taste-edit-score-group{grid-column:1/-1;display:grid;gap:6px;min-width:0}
.lightbox-edit-form#lightboxTasteForm .taste-edit-score-group .taste-score-field{background:transparent!important}

/* Once an account has used its daily upload, replace the whole form with a
   compact status card instead of leaving an inactive upload box on screen. */
.upload-daily-locked{grid-column:2;align-self:stretch;display:grid;place-items:center;min-height:220px;margin:0;padding:28px 24px;border:1px solid rgba(43,110,143,.24);border-radius:12px;background:rgba(255,253,249,.92);box-shadow:10px 11px 0 rgba(22,53,71,.08);color:var(--ink);font:800 20px/1.45 Rubik,Assistant,Arial,sans-serif;text-align:center}
.upload-daily-locked[hidden]{display:none}
.upload-card[hidden]{display:none!important}
.site-header .upload-link[hidden]{display:none!important}
@media(max-width:700px){.upload-daily-locked{grid-column:1;min-height:180px;width:100%;padding:24px 18px;font-size:18px}}
@media(min-width:701px){
  .lightbox-owner-tools,.lightbox-info-panels{width:min(900px,92vw)}
  .lightbox-edit-forms{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
  .lightbox-edit-forms>.lightbox-edit-form{min-width:0;margin-top:10px}
  .lightbox-info-panels{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* The upload form keeps preparation and taste in separate full-width rows.
   Only the post viewer/editor uses the two-column panel layout above. */
@media(min-width:701px){
  #uploadForm.upload-card>#brewDetailsSection,
  #uploadForm.upload-card>#tasteProfileSection{grid-column:1 / -1}
  #uploadForm.upload-card>#tasteProfileSection .taste-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:901px){
  .lightbox-edit-forms,.lightbox-info-panels{grid-template-columns:minmax(0,1.3fr) minmax(260px,.7fr)}
}
.lightbox-beans-stack{display:grid;align-content:center;justify-items:start;min-width:0;gap:3px;flex:1 1 auto}
.lightbox-taste-score-under-beans{display:flex;align-items:center;justify-content:flex-start;gap:8px;color:#dbe8ec;font:800 13px/1.2 Assistant,Arial,sans-serif;white-space:nowrap}

/* Owner editing is part of each expandable information panel.  The pencil
   uses the same compact circular treatment as the panel's +/- control. */
.lightbox-summary-edit{display:grid;place-items:center;flex:0 0 22px;width:22px;height:22px;margin:0;padding:0;border:1px solid rgba(244,181,108,.5);border-radius:50%;background:transparent;color:#f4b56c;cursor:pointer;transition:background .18s ease,border-color .18s ease,transform .18s ease}
.lightbox-summary-edit[hidden]{display:none!important}
.lightbox-summary-edit svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.lightbox-summary-edit:hover{background:rgba(244,181,108,.18);border-color:#f4b56c;transform:translateY(-1px)}
.lightbox-brew-details-title,.lightbox-taste-title{position:relative;display:block;min-height:22px;padding-left:58px}
.lightbox-brew-details-title,.lightbox-taste-title{text-align:right;direction:rtl}
.lightbox-brew-details-title::after,.lightbox-taste-title::after{position:absolute;left:0;top:50%;transform:translateY(-50%);margin:0}
.lightbox-summary-edit{position:absolute;left:30px;top:50%;z-index:1;transform:translateY(-50%);flex:none}
.lightbox-summary-edit:hover{transform:translateY(calc(-50% - 1px))}
.lightbox-edit-status:empty{display:none}
.lightbox-taste-score-under-beans[hidden]{display:none!important}
.lightbox-taste-score-under-beans .lightbox-cups{gap:2px}
.lightbox-taste-score-under-beans .lightbox-cups img{width:20px;height:20px}
@media(max-width:700px){.lightbox-taste-score-under-beans{font-size:12px}.lightbox-taste-score-under-beans .lightbox-cups img{width:18px;height:18px}}

/* Keep the signed-in profile action beside upload, with the same rounded,
   coffee-shop button language as the rest of the header. */
.header-actions{display:flex;align-items:center;gap:9px;flex:0 0 auto}
.profile-link{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 13px;border:1px solid rgba(43,110,143,.34);border-radius:999px;background:#fffdf9;color:var(--ink);font:800 14px/1 Assistant,Arial,sans-serif;text-decoration:none;white-space:nowrap;transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}
.profile-link:hover,.profile-link:focus-visible{border-color:var(--blue);background:var(--sky);color:var(--blue);transform:translateY(-1px);outline:0}
.profile-link-icon{width:18px;height:18px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.9}
.profile-link[hidden]{display:none!important}
.upload-brew-details#tasteProfileSection{border-color:rgba(43,110,143,.28);background:#f2f8fb}
#tasteProfileSection .taste-helper{margin:0 0 10px;color:#163547;font:600 16px/1.45 Assistant,Arial,sans-serif}
#tasteProfileSection .taste-fields{gap:10px;margin-top:10px}
#tasteProfileSection .taste-slider-field{gap:7px;padding:10px;border:1px solid rgba(22,53,71,.24);border-radius:7px;background:#fffdf9}
#tasteProfileSection .taste-slider-heading{color:#163547;font:800 15px/1.25 Assistant,Arial,sans-serif}
#tasteProfileSection .taste-slider-heading output{color:#55707d;font:600 14px/1.25 Assistant,Arial,sans-serif}
#tasteProfileSection .taste-score-field{padding:10px;border:1px solid rgba(22,53,71,.24);border-radius:7px;background:#fffdf9}
#tasteProfileSection .taste-score-field legend{color:#163547;font:800 15px/1.25 Assistant,Arial,sans-serif}
.profile-login-dialog{width:min(92vw,430px);padding:0;border:0;border-radius:18px;background:transparent;color:var(--ink);box-shadow:0 24px 80px rgba(15,35,48,.35)}
.profile-login-dialog::backdrop{background:rgba(14,35,45,.58);backdrop-filter:blur(3px)}
.profile-login-dialog[hidden]{display:none}
.profile-login-dialog-card{position:relative;padding:28px 24px 24px;border:1px solid rgba(43,110,143,.24);border-radius:18px;background:linear-gradient(145deg,#fffdf9,#eef7f7);text-align:center}
.profile-login-dialog-card h2{margin:0 0 8px;color:#163547;font:900 23px/1.2 Rubik,Assistant,Arial,sans-serif}
.profile-login-dialog-card>p{margin:0 0 18px;color:#55707d;font:600 15px/1.5 Assistant,Arial,sans-serif}
.profile-login-dialog-close{position:absolute;inset:10px 10px auto auto;width:32px;height:32px;border:0;border-radius:50%;background:rgba(43,110,143,.1);color:#163547;font-size:22px;line-height:1;cursor:pointer}
.profile-login-dialog-card .auth-provider-button{width:100%;justify-content:center;margin:0 0 14px}
.profile-login-email-form{display:grid;gap:9px;text-align:right}
.profile-login-email-form label{color:#163547;font:800 14px Assistant,Arial,sans-serif}
.profile-login-email-form input{display:block;width:100%;box-sizing:border-box;margin-top:5px;padding:10px 12px;border:1px solid rgba(43,110,143,.35);border-radius:9px;background:#fff;color:#163547;font:600 16px Assistant,Arial,sans-serif}
.profile-login-email-form button{border:1px solid rgba(43,110,143,.35);border-radius:999px;background:#fff;color:#2b6e8f;padding:10px 14px;font:800 15px Assistant,Arial,sans-serif;cursor:pointer}
.profile-login-email-form button:hover{background:#e9f5f6}
.profile-login-dialog-card .auth-message{min-height:20px;margin:12px 0 0;text-align:center}
.account-name-required-card{padding-top:24px}
.account-name-required-mark{display:grid;place-items:center;width:52px;height:52px;margin:0 auto 12px;border-radius:50%;background:#efaa5a;color:#163547;font-size:27px;box-shadow:0 5px 12px rgba(22,53,71,.14)}
.account-name-required-card form{display:grid;gap:11px;text-align:right}
.account-name-required-card label{display:grid;gap:7px;color:#163547;font:800 15px/1.3 Assistant,Arial,sans-serif}
.account-name-required-card input{box-sizing:border-box;width:100%;min-height:46px;padding:10px 12px;border:1px solid rgba(43,110,143,.3);border-radius:9px;background:#fffdf9;color:#17232b;-webkit-text-fill-color:#17232b;font:600 16px/1.2 Assistant,Arial,sans-serif;direction:rtl}
.account-name-required-card input:focus{outline:3px solid rgba(43,110,143,.14);border-color:#2b6e8f}
.account-name-required-card button[type=submit]{width:100%;min-height:44px}
@media(max-width:700px){
 .header-actions{gap:6px;margin-right:auto}
 .site-header .header-actions .upload-link{margin-right:0}
 .profile-link{width:40px;height:40px;padding:0;border-radius:9px}
 .profile-link span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
 .profile-link-icon{width:20px;height:20px}
}

/* Profile identity, public-name selection, avatar upload, and notification
   actions. Keep account names intact even when Latin text sits in RTL layout. */
.profile-identity-copy{min-width:0}
.profile-identity h3,.profile-identity p{direction:ltr;unicode-bidi:plaintext;word-break:normal;overflow-wrap:break-word;white-space:normal}
.profile-public-name-form{display:grid;gap:8px;margin-top:20px;padding-top:18px;border-top:1px solid rgba(22,53,71,.14)}
.profile-public-name-form label{display:grid;gap:6px;color:#163547;font-weight:800}
.profile-public-name-form input{width:100%;padding:11px 13px;border:1px solid rgba(43,110,143,.34);border-radius:8px;background:#fffdf9;color:#163547;font:600 16px Assistant,Arial,sans-serif;outline:none}
.profile-public-name-form input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(43,110,143,.13)}
.profile-field-help{margin:0;color:#55707d;font-size:13px;font-weight:600}
.profile-primary-button{justify-self:start;padding:9px 16px;border:0;border-radius:999px;background:var(--blue);color:#fff;font:800 14px Assistant,Arial,sans-serif;cursor:pointer}
.profile-primary-button:hover{background:var(--terracotta);transform:translateY(-1px)}
.profile-logout-button{display:inline-flex;align-items:center;justify-content:center;margin-top:12px;padding:8px 15px;border:1px solid rgba(163,79,53,.42);border-radius:999px;background:#fff8f2;color:#a34f35;font:800 14px Assistant,Arial,sans-serif;cursor:pointer;transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}
.profile-logout-button:hover,.profile-logout-button:focus-visible{border-color:#a34f35;background:#a34f35;color:#fff;transform:translateY(-1px);outline:0}
.profile-logout-button:disabled{cursor:wait;opacity:.58;transform:none}
.profile-image-form{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:15px}
.profile-image-picker{display:inline-flex;align-items:center;gap:7px;padding:9px 13px;border:1px solid rgba(43,110,143,.3);border-radius:999px;background:#edf5f4;color:var(--blue);font:800 14px Assistant,Arial,sans-serif;cursor:pointer}
.profile-image-picker:hover{border-color:var(--blue);background:#e3f0f0}
.profile-image-picker input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.profile-image-picker-icon{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--blue);color:#fff;font-size:17px;line-height:1}
.profile-image-form .profile-status{flex:1 1 180px;margin:0}
.profile-notification-meta{display:grid;justify-items:end;gap:5px;min-width:76px}
.profile-notification-view{padding:3px 8px;border:1px solid rgba(43,110,143,.26);border-radius:999px;background:#fffdf9;color:var(--blue);font:800 12px Assistant,Arial,sans-serif;cursor:pointer}
.profile-notification-view:hover{border-color:var(--blue);background:var(--blue);color:#fff}
@media(max-width:700px){.profile-public-name-form{margin-top:16px;padding-top:15px}.profile-primary-button{width:100%}.profile-image-form{align-items:flex-start;flex-direction:column}.profile-image-form .profile-status{flex-basis:auto}.profile-notification-meta{justify-items:start;min-width:0}.profile-notification-view{font-size:11px}}

/* Give the profile a balanced dashboard layout: identity and notification
   settings sit side by side on wide screens and stack naturally on phones. */
body.profile-page #profile{max-width:1120px!important}
body.profile-page #profile .section-heading{margin-bottom:28px}
body.profile-page .profile-content{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none;align-items:start;gap:20px}
body.profile-page .profile-card{min-width:0;padding:26px;background:linear-gradient(145deg,#fffdf9 0%,#f8fcfb 100%);box-shadow:8px 9px 0 rgba(22,53,71,.07)}
body.profile-page .profile-identity-card{box-shadow:10px 11px 0 rgba(22,53,71,.08)}
body.profile-page .profile-identity-card,body.profile-page .profile-stats-card,body.profile-page .profile-preferences-card{grid-column:1/-1}
body.profile-page #profileGallery{grid-column:1/-1}
body.profile-page .profile-stats-card{box-shadow:7px 8px 0 rgba(43,110,143,.09)}
body.profile-page .profile-card-heading{align-items:flex-start}
body.profile-page .profile-card-heading>div{min-width:0}
body.profile-page .profile-card-heading h3{overflow-wrap:anywhere}
body.profile-page .profile-stats{grid-template-columns:repeat(4,minmax(0,1fr))}
body.profile-page .profile-preferences{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:20px}
body.profile-page .profile-preferences-title{grid-column:1/-1;margin:8px 0 0;color:var(--ink);font:900 18px/1.1 Rubik,Arial,sans-serif}
body.profile-page .profile-preferences-title:first-child{margin-top:0}
body.profile-page .profile-preferences label{justify-content:space-between;gap:14px;min-height:52px;padding:12px 14px;border:1px solid rgba(43,110,143,.12);background:#eef6f5;transition:border-color .18s ease,background .18s ease,transform .18s ease}
body.profile-page .profile-preferences label:hover{border-color:rgba(43,110,143,.36);background:#e5f2f1;transform:translateY(-1px)}
body.profile-page .profile-preferences label span{line-height:1.3}
body.profile-page .profile-preferences input{position:relative;flex:0 0 44px;width:44px;height:25px;margin:0;appearance:none;border:1px solid rgba(43,110,143,.38);border-radius:999px;background:#c7d9d9;cursor:pointer;transition:background .18s ease,border-color .18s ease}
body.profile-page .profile-preferences input::after{content:"";position:absolute;top:3px;inset-inline-start:3px;width:17px;height:17px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(22,53,71,.25);transition:inset-inline-start .18s ease}
body.profile-page .profile-preferences input:checked{border-color:var(--blue);background:var(--blue)}
body.profile-page .profile-preferences input:checked::after{inset-inline-start:22px}
body.profile-page .profile-preferences input:focus-visible{outline:3px solid rgba(43,110,143,.2);outline-offset:2px}
body.profile-page .profile-status{margin-top:14px}
@media(max-width:900px){
  body.profile-page .profile-content{grid-template-columns:minmax(0,1fr)}
  body.profile-page .profile-preferences{grid-template-columns:1fr}
}
@media(max-width:700px){
  body.profile-page #profile{padding-top:42px}
  body.profile-page .profile-card{padding:18px}
  body.profile-page .profile-identity{align-items:flex-start;gap:12px}
  body.profile-page .profile-identity-copy{padding-top:3px}
  body.profile-page .profile-stats{gap:7px;margin-top:18px}
  body.profile-page .profile-stats div{padding:10px 7px}
  body.profile-page .profile-stats strong{font-size:21px}
}

/* Profile dashboard cards keep the reading order clear in RTL: identity,
   activity, preferences, then the advanced tools generated by app.js. */
.profile-stats-card .profile-card-heading{margin-bottom:2px}
.profile-stats-card .profile-stats{margin-top:18px}
.profile-stats-card .profile-stats div{min-height:82px;align-content:center;border:1px solid rgba(43,110,143,.1);background:#edf5f4}
.profile-empty-state{display:grid;justify-items:center;gap:8px;margin:14px 0 0;padding:24px 18px;border:1px dashed rgba(43,110,143,.28);border-radius:12px;background:#f3f8f7;color:#55707d;text-align:center;font-weight:700;line-height:1.45}
.profile-empty-icon{display:block;width:48px;height:48px;object-fit:contain;border-radius:50%;background:#f3dfc5;padding:3px}
.profile-empty-cta{display:inline-flex;align-items:center;justify-content:center;margin-top:4px;padding:8px 14px;border-radius:999px;background:var(--blue);color:#fff;text-decoration:none;font:800 13px Assistant,Arial,sans-serif}
.profile-empty-cta:hover{background:var(--terracotta)}
@media(max-width:700px){
  body.profile-page .profile-card-heading{gap:8px}
  body.profile-page .profile-card-help{line-height:1.35}
  .profile-stats-card .profile-stats div{min-height:72px}
}

/* Preparation details and taste controls share one compact row on desktop;
   the taste card intentionally gets the narrower column. */
@media(min-width:701px){
  #uploadForm.upload-card{display:grid;grid-template-columns:minmax(0,1.14fr) minmax(230px,.86fr);column-gap:14px;row-gap:14px;align-items:start}
  #uploadForm.upload-card>#uploadAuth,
  #uploadForm.upload-card>.drop-zone,
  #uploadForm.upload-card>.preview,
  #uploadForm.upload-card>.name-field,
  #uploadForm.upload-card>#beanDetailsSection,
  #uploadForm.upload-card>.upload-button,
  #uploadForm.upload-card>.upload-message{grid-column:1 / -1}
  #uploadForm.upload-card>#brewDetailsSection{grid-column:1;margin-top:0}
  #uploadForm.upload-card>#tasteProfileSection{grid-column:2;margin-top:0;min-width:0}
  #uploadForm.upload-card>#tasteProfileSection .taste-fields{grid-template-columns:1fr}
}
@media(min-width:701px) and (max-width:900px){
  #uploadForm.upload-card{grid-template-columns:minmax(0,1.2fr) minmax(205px,.8fr);column-gap:10px}
  #uploadForm.upload-card>#tasteProfileSection{padding-inline:10px}
  #uploadForm.upload-card>#tasteProfileSection .taste-slider-field{padding-inline:8px}
}

/* A comment reached from a notification is gently highlighted, without
   moving the surrounding thread or leaving a permanent bright color behind. */
.comment-item.comment-highlight{border-color:#efaa5a!important;box-shadow:0 0 0 3px rgba(239,170,90,.34),0 5px 0 rgba(22,53,71,.08);animation:comment-highlight-pulse 2.6s ease both}
@keyframes comment-highlight-pulse{0%{background:#fff8ea}18%,58%{background:#f8e1b9}100%{background:#edf5f4}}
.comment-item.comment-reply.comment-highlight{animation-name:comment-reply-highlight-pulse}
@keyframes comment-reply-highlight-pulse{0%{background:#fff8ea}18%,58%{background:#f8e1b9}100%{background:#f8eee0}}
@media(prefers-reduced-motion:reduce){.comment-item.comment-highlight{animation:none}}

/* Compact reactions keep the same rounded language as the other social
   controls while making each comment/reply independently reactable. */
.comment-reactions{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin:8px 0 4px;direction:ltr}
.comment-reaction-button{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:38px;min-height:30px;padding:4px 7px;border:1px solid rgba(43,110,143,.2);border-radius:999px;background:#fff;color:#355b6a;font:700 14px/1 Assistant,Arial,sans-serif;cursor:pointer;transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}
.comment-reaction-button:hover,.comment-reaction-button:focus-visible{border-color:#2b6e8f;background:#d9edf1;color:#163547;outline:0;transform:translateY(-1px)}
.comment-reaction-button.active{border-color:#efaa5a;background:#f8e1b9;color:#163547}
.comment-reaction-button:disabled{cursor:wait;opacity:.62;transform:none}
.comment-reaction-symbol{font-size:16px;line-height:1}
.comment-reaction-count{min-width:1ch;text-align:center;font-size:12px}
@media(max-width:700px){.comment-reaction-button{min-width:36px;padding-inline:6px}.comment-reactions{gap:4px}}

/* On upload, keep beans, preparation, and taste panels in one predictable
   vertical flow at every desktop width.  This final override comes after
   the older responsive grid rules above. */
@media(min-width:701px){
  #uploadForm.upload-card>#beanDetailsSection,
  #uploadForm.upload-card>#brewDetailsSection,
  #uploadForm.upload-card>#tasteProfileSection{
    grid-column:1 / -1;
    width:100%;
  }
}

/* Shared header notifications menu. It follows the profile action and stays
   usable as a compact icon button on narrow screens. */
.notifications-menu{position:relative;z-index:30;flex:0 0 auto}
.notifications-link{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:10px 13px;border:1px solid rgba(43,110,143,.34);border-radius:999px;background:#fffdf9;color:var(--ink);font:800 14px/1 Assistant,Arial,sans-serif;cursor:pointer;white-space:nowrap;transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease,box-shadow .18s ease}
.notifications-link:hover,.notifications-link:focus-visible{border-color:var(--blue);background:var(--sky);color:var(--blue);transform:translateY(-1px);outline:0}
.notifications-link.has-unread{border-color:var(--terracotta);box-shadow:0 0 0 3px rgba(201,110,77,.13)}
.notifications-link-icon{width:18px;height:18px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.9}
.notifications-count{position:absolute;top:-6px;inset-inline-end:-6px;min-width:19px;height:19px;padding:0 4px;border:2px solid #fffdf9;border-radius:999px;background:var(--terracotta);color:#fff;text-align:center;font:900 11px/15px Rubik,Arial,sans-serif}
.notifications-panel{position:absolute;top:calc(100% + 10px);inset-inline-end:0;z-index:1100;width:min(390px,calc(100vw - 24px));max-height:min(75vh,560px);padding:13px;border:1px solid rgba(43,110,143,.24);border-radius:14px;background:#fffdf9;color:#163547;box-shadow:0 18px 42px rgba(22,53,71,.22);text-align:right}
.notifications-panel[hidden]{display:none!important}
.notifications-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 2px 10px;border-bottom:1px solid rgba(22,53,71,.12)}
.notifications-panel-heading h2{margin:0;color:#163547;font:900 20px/1 Rubik,Arial,sans-serif}
.notifications-panel-heading button{padding:5px 8px;border:0;background:transparent;color:#2b6e8f;font:800 12px Assistant,Arial,sans-serif;cursor:pointer}
.notifications-panel-list{display:grid;gap:7px;max-height:480px;overflow:auto;padding-top:9px}
.notifications-panel-empty{margin:0;padding:20px 10px;color:#55707d;text-align:center;font-weight:700}
.notifications-panel-item{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:9px;width:100%;padding:10px;border:1px solid transparent;border-radius:10px;background:#f5f0e8;color:#355b6a;text-align:right;cursor:pointer}
.notifications-panel-item:hover,.notifications-panel-item:focus-visible{border-color:rgba(43,110,143,.36);background:#edf5f4;outline:0}
.notifications-panel-item.unread{border-inline-start:3px solid #efaa5a;background:#e3f0f0}
.notifications-panel-type{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#2b6e8f;color:#fff;font:900 14px/1 Rubik,Arial,sans-serif}
.notifications-panel-type-like{background:#c96e4d}
.notifications-panel-body{display:grid;gap:4px;min-width:0}
.notifications-panel-body strong{display:flex;align-items:center;gap:7px;color:#163547;font:800 14px/1.2 Assistant,Arial,sans-serif;overflow-wrap:anywhere}
.notifications-panel-message{color:#355b6a;font:600 13px/1.35 Assistant,Arial,sans-serif;overflow-wrap:anywhere}
.notifications-panel-meta{color:#71858b;font:600 11px/1.2 Assistant,Arial,sans-serif}
.notifications-panel-avatar{display:inline-block;width:23px;height:23px;flex:0 0 23px;border-radius:50%;object-fit:cover}
.notifications-panel-avatar-fallback{display:grid;place-items:center;background:#d9edf1;color:#2b6e8f;font-size:13px}
.site-header>.notifications-menu{margin-inline-start:9px}
@media(max-width:700px){
  .notifications-link{width:40px;height:40px;min-height:40px;padding:0;border-radius:9px}
  .notifications-link>span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  .notifications-link-icon{width:20px;height:20px}
  .notifications-panel{position:fixed;top:66px;inset-inline:12px;width:auto;max-width:none}
  .site-header>.notifications-menu{margin-inline-start:0}
}

/* Keep related preparation values together on wider forms. Categories get a
   full row, while manufacturer/model pairs share the next row. The mobile
   layout below intentionally returns to a single comfortable column. */
@media(min-width:701px){
  #brewDetailsFields .brew-detail[data-field-key="machineCategory"],
  #lightboxEditDetailsFields .brew-detail[data-field-key="machineCategory"],
  #brewDetailsFields .brew-detail[data-field-key="grinderCategory"],
  #lightboxEditDetailsFields .brew-detail[data-field-key="grinderCategory"]{grid-column:1 / -1}
  #brewDetailsFields .brew-detail[data-field-key="machineBrand"],
  #lightboxEditDetailsFields .brew-detail[data-field-key="machineBrand"],
  #brewDetailsFields .brew-detail[data-field-key="grinderBrand"],
  #lightboxEditDetailsFields .brew-detail[data-field-key="grinderBrand"]{grid-column:1}
  #brewDetailsFields .brew-detail[data-field-key="machineModel"],
  #lightboxEditDetailsFields .brew-detail[data-field-key="machineModel"],
  #brewDetailsFields .brew-detail[data-field-key="grinderModel"],
  #lightboxEditDetailsFields .brew-detail[data-field-key="grinderModel"]{grid-column:2}
}

/* Profile avatar picker and the coffee-only avatar generator. */
.profile-avatar-wrap{isolation:isolate}
.profile-avatar-art,.profile-avatar-generated{position:absolute;inset:0;display:block;border-radius:inherit;overflow:hidden;background:transparent}
.profile-avatar-art[hidden],.profile-avatar-generated[hidden],.profile-avatar-dialog[hidden]{display:none!important}
.profile-avatar-art svg,.profile-avatar-generated svg{display:block;width:100%;height:100%}
.profile-avatar-edit{position:absolute;inset-inline-end:-7px;top:-6px;z-index:3;display:grid;place-items:center;width:30px;height:30px;padding:0;border:2px solid #fffdf9;border-radius:50%;background:var(--terracotta);color:#fff;box-shadow:0 2px 7px rgba(22,53,71,.26);cursor:pointer;transition:transform .18s ease,background .18s ease}
.profile-avatar-edit:hover,.profile-avatar-edit:focus-visible{background:var(--blue);transform:scale(1.08);outline:0}
.profile-avatar-edit svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}
.profile-avatar-dialog{width:min(94vw,760px);max-height:min(90vh,820px);padding:0;border:0;border-radius:18px;background:#fffdf9;color:var(--ink);box-shadow:0 22px 70px rgba(22,53,71,.28)}
.profile-avatar-dialog::backdrop{background:rgba(22,53,71,.55);backdrop-filter:blur(4px)}
.profile-avatar-dialog-card{padding:25px 27px 27px;overflow:auto}
.profile-avatar-dialog-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}
.profile-avatar-dialog-heading h3{margin:5px 0 0;color:var(--ink);font:900 27px/1 Rubik;letter-spacing:-.05em}
.profile-avatar-dialog-close{display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid rgba(43,110,143,.25);border-radius:50%;background:#fff;color:var(--blue);font-size:23px;line-height:1;cursor:pointer}
.profile-avatar-dialog-close:hover{background:var(--sky);border-color:var(--blue)}
.profile-avatar-dialog-intro{margin:10px 0 18px;color:#55707d;font-weight:600}
.profile-avatar-crop{margin-top:17px;padding-top:17px;border-top:1px solid rgba(22,53,71,.12)}
.profile-avatar-crop[hidden]{display:none!important}
.profile-avatar-crop-heading h4{margin:5px 0 13px;color:var(--ink);font:900 23px/1 Rubik;letter-spacing:-.04em}
.profile-avatar-crop-stage{position:relative;width:min(100%,360px);aspect-ratio:1;margin:0 auto;overflow:hidden;border-radius:14px;background:#dce6e6;box-shadow:inset 0 0 0 2px rgba(22,53,71,.16);touch-action:none;cursor:grab}
.profile-avatar-crop.profile-cover-crop .profile-avatar-crop-stage{width:min(100%,560px);aspect-ratio:3/1}
.profile-avatar-crop.profile-cover-crop .profile-avatar-crop-heading h4{font-size:21px}
.profile-avatar-crop-stage.is-dragging{cursor:grabbing}
.profile-avatar-crop-stage::after{content:'';position:absolute;inset:0;border:2px solid rgba(255,255,255,.86);border-radius:14px;box-shadow:0 0 0 999px rgba(22,53,71,.12);pointer-events:none}
.profile-avatar-crop-stage img{position:absolute;top:50%;left:50%;max-width:none;user-select:none;pointer-events:none;will-change:transform,width,height}
.profile-avatar-crop-help{margin:10px 0 13px;color:#55707d;font-size:14px;font-weight:600;text-align:center}
.profile-avatar-crop-zoom{display:grid;gap:5px;color:var(--ink);font:800 15px Assistant,Arial,sans-serif}
.profile-avatar-crop-zoom input{width:100%;accent-color:var(--terracotta);direction:ltr}
.profile-avatar-crop-actions{display:flex;justify-content:flex-start;gap:9px;margin-top:15px}
.profile-avatar-crop-actions button{min-height:42px}
.profile-avatar-choices{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:11px}
.profile-avatar-choice{display:grid;gap:6px;justify-items:center;padding:8px 5px;border:2px solid transparent;border-radius:12px;background:#f4f0e8;color:var(--ink);font:800 12px Assistant,Arial,sans-serif;cursor:pointer;transition:border-color .18s ease,background .18s ease,transform .18s ease}
.profile-avatar-choice:hover,.profile-avatar-choice:focus-visible{border-color:var(--blue);background:#edf5f4;transform:translateY(-2px);outline:0}
.profile-avatar-choice[aria-pressed="true"]{border-color:var(--terracotta);background:#fff1e4;box-shadow:0 0 0 2px rgba(239,170,90,.18)}
.profile-avatar-choice img,.profile-avatar-choice-art{display:block;width:76px;height:76px;border-radius:50%;object-fit:cover}
.profile-avatar-choice-art{display:grid;place-items:center;background:#e3f0f0}
.profile-avatar-choice-art svg{display:block;width:100%;height:100%}
.profile-generator{margin-top:23px;padding:18px;border:1px solid rgba(43,110,143,.18);border-radius:14px;background:#edf5f4}
.profile-generator-heading{display:flex;align-items:center;justify-content:space-between;gap:14px}
.profile-generator-heading h4{margin:4px 0 0;color:var(--ink);font:900 20px/1 Rubik}
.profile-generator-random{padding:7px 11px;border:1px solid rgba(43,110,143,.3);border-radius:999px;background:#fff;color:var(--blue);font:800 12px Assistant;cursor:pointer}
.profile-generator-random:hover{background:var(--blue);color:#fff}
.profile-generator-body{display:grid;grid-template-columns:150px 1fr;gap:18px;align-items:center;margin-top:14px}
.profile-generator-preview{display:grid;place-items:center;width:150px;height:150px;border-radius:50%;background:#d5e8ea;overflow:hidden}
.profile-generator-preview svg{width:100%;height:100%}
.profile-generator-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:end}
.profile-generator-controls label{display:grid;gap:5px;color:var(--ink);font-size:13px;font-weight:800}
.profile-generator-controls select{width:100%;padding:9px 10px;border:1px solid rgba(43,110,143,.28);border-radius:8px;background:#fffdf9;color:var(--ink);font:700 14px Assistant;outline:none}
.profile-generator-apply{grid-column:1/-1;padding:10px 14px;border:0;border-radius:999px;background:var(--blue);color:#fff;font:800 14px Assistant;cursor:pointer}
.profile-generator-apply:hover{background:var(--terracotta)}
.profile-avatar-dialog .profile-image-form{margin-top:17px;padding-top:15px;border-top:1px solid rgba(22,53,71,.12)}
@media(max-width:700px){.profile-avatar-dialog-card{padding:20px 16px}.profile-avatar-choices{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.profile-avatar-choice img,.profile-avatar-choice-art{width:64px;height:64px}.profile-generator-body{grid-template-columns:1fr}.profile-generator-preview{width:130px;height:130px;margin:0 auto}.profile-generator-controls{grid-template-columns:1fr}.profile-generator-apply{grid-column:auto}}

/* Keep the upload action visually aligned with the profile action. On narrow
   screens both become compact icon buttons so the header stays uncluttered. */
.site-header .upload-link{display:inline-flex;align-items:center;justify-content:center;gap:7px}
.upload-link-icon{width:18px;height:18px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.9}
@media(max-width:700px){
  .site-header .upload-link{width:40px;height:40px;padding:0;border-radius:9px}
  .site-header .upload-link span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  .site-header .upload-link-icon{width:20px;height:20px}
}

/* On phones the upload action floats just below the sticky header so it is
   always reachable without competing with the profile/notification icons. */
@media(max-width:700px){
  .site-header .upload-link{position:fixed;top:78px;left:12px;z-index:25;width:44px;height:44px;padding:0;border-radius:50%;box-shadow:0 6px 16px rgba(22,53,71,.22)}
  .site-header .upload-link:hover,.site-header .upload-link:focus-visible{transform:translateY(-1px)}
}

.brew-preset-tools,.recipe-share-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid rgba(22,53,71,.12)}
.brew-preset-tools{margin-top:10px;padding-top:0;border-top:0}
.recipe-share-tools{margin-top:16px;padding:13px 14px;border:1px solid rgba(180,113,47,.28);border-radius:14px;background:linear-gradient(135deg,#fff8ed,#f4f8f6);box-shadow:0 5px 14px rgba(22,53,71,.06)}
.recipe-share-tools::before{content:'';display:block;width:30px;height:30px;border-radius:50%;background:#f0c58d url('favicon.png?v=20260827-logo-global-1') center/contain no-repeat}
.recipe-share-tools button,.recipe-share-tools .recipe-import-label{border-color:#c88749;background:#fff;color:#6a3c22;font-weight:800;box-shadow:0 2px 0 rgba(180,113,47,.15)}
.recipe-share-tools button:hover,.recipe-share-tools .recipe-import-label:hover{background:#fff3e2;border-color:#a9652d;transform:translateY(-1px)}
.brew-preset-tools select,.brew-preset-tools button,.recipe-share-tools button,.recipe-import-label{font:inherit;border:1px solid rgba(22,53,71,.2);border-radius:10px;padding:8px 11px;background:#fff;color:#17232b;cursor:pointer}
.brew-preset-tools label{font:800 16px/1.25 Assistant,Arial,sans-serif;color:var(--ink)}
.brew-equipment-picker{display:flex;flex-direction:column;align-items:stretch;gap:7px;flex:1 1 100%;min-width:0;line-height:1.25}
.brew-equipment-picker select{flex:1 1 auto;min-width:0;width:100%}
.profile-preset-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;margin-top:16px;padding:14px;border:1px solid rgba(22,53,71,.12);border-radius:12px;background:rgba(255,255,255,.62)}
.profile-preset-form[hidden],.profile-preset-form[aria-hidden="true"]{display:none!important}
.profile-preset-form .profile-preset-type,.profile-preset-form .profile-preset-details-fields{grid-column:1/-1}
.profile-preset-form .profile-preset-details-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.profile-preset-form .profile-preset-details-fields .name-field{margin-top:0;min-width:0}
.profile-preset-form label{display:grid;gap:6px;font-weight:800;color:#263b45}
.profile-preset-form input{width:100%;min-height:42px;border:1px solid rgba(43,110,143,.3);border-radius:9px;background:#fff;color:#17232b;padding:9px 11px;font:600 16px Assistant,Arial,sans-serif}
.profile-preset-form select{width:100%;min-height:42px;border:1px solid rgba(43,110,143,.3);border-radius:9px;background-color:#fffdf9;color:#17232b;-webkit-text-fill-color:#17232b;padding:9px 36px 9px 11px;font:600 16px Assistant,Arial,sans-serif;direction:rtl;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m3 6 5 5 5-5' fill='none' stroke='%232b6e8f' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.8'/%3E%3C/svg%3E");background-position:left 12px center;background-repeat:no-repeat;background-size:16px;cursor:pointer;color-scheme:light}
.profile-preset-form input,.profile-preset-form select,.profile-preset-form .brew-detail input,.profile-preset-form .brew-detail select{background-color:#fffdf9;color:#17232b;-webkit-text-fill-color:#17232b;color-scheme:light}
.profile-preset-form #profilePresetDrinkType,.profile-preset-form select[name="waterTemperature"]{background-color:#fffdf9!important;color:#17232b!important;-webkit-text-fill-color:#17232b!important}
.profile-preset-form input:focus{outline:2px solid rgba(43,110,143,.2);border-color:var(--blue)}
.profile-preset-form input:focus,.profile-preset-form select:focus{outline:2px solid rgba(43,110,143,.2);border-color:var(--blue)}
.profile-preset-form select option{background:#fffdf9;color:#17232b;font:600 16px Assistant,Arial,sans-serif}
.profile-preset-form .profile-primary-button{margin:0;min-height:42px;white-space:nowrap}
.profile-preset-form .profile-status{grid-column:1/-1;margin:0;min-height:1.2em}
.brew-time-suggestion{margin-top:10px;padding:10px 12px;border-radius:10px;background:#fff8e8;color:#68451f;font-size:.9rem}
.brew-time-suggestion a{color:#8a5229;font-weight:700;margin-inline-start:5px}
.daily-note-preview{display:block;border:0;background:transparent;color:#6e4a32;padding:5px 0;text-align:start;font:inherit;font-size:.88rem;cursor:pointer;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.profile-advanced-card{margin-top:16px}
.profile-presets-card,.profile-analytics-card,.profile-equipment-card{grid-column:1 / -1}
.profile-card-help{font-size:.85rem;color:#60717b}
.profile-presets-list{display:grid;gap:8px;margin-top:14px}
.profile-preset-row{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"actions summary" "actions date";align-items:center;gap:3px 12px;min-height:82px;padding:11px 12px;border:1px solid rgba(22,53,71,.12);border-radius:12px;background:rgba(255,255,255,.55);overflow:hidden;direction:ltr}
.profile-preset-summary{grid-area:summary;display:flex;align-items:center;min-width:0;overflow:hidden;direction:rtl;gap:8px;line-height:1.25}
.profile-preset-summary strong,.profile-preset-summary span{display:block;margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.profile-preset-summary strong{flex:1 1 38%;color:var(--ink);font-size:1rem}
.profile-preset-summary .profile-preset-type{flex:0 1 27%;color:#486977;font-size:.9rem}
.profile-preset-summary .profile-preset-machine{flex:1 1 35%;color:#60717b;font-size:.9rem}
.profile-preset-separator{flex:0 0 auto;color:rgba(22,53,71,.45);font-weight:800}
.profile-preset-date{grid-area:date;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#60717b;font-size:.78rem;line-height:1.2;direction:rtl;text-align:right}
.profile-presets-card .profile-card-heading> .profile-secondary-button{flex:0 0 auto;white-space:nowrap}
.profile-section-quick-nav{display:none}
@media(max-width:700px){
  .profile-section-quick-nav{position:sticky;top:70px;z-index:5;display:flex;grid-column:1/-1;gap:7px;overflow-x:auto;margin:-8px 0 2px;padding:7px 2px;background:rgba(255,253,249,.94);backdrop-filter:blur(10px);direction:rtl;scrollbar-width:none}
  .profile-section-quick-nav::-webkit-scrollbar{display:none}
  .profile-section-quick-button{flex:0 0 auto;min-height:40px;padding:8px 13px;border:1px solid rgba(43,110,143,.34);border-radius:999px;background:rgba(255,255,255,.72);color:#2b6e8f;font:800 14px/1 Assistant,Arial,sans-serif;white-space:nowrap;cursor:pointer;transition:transform .18s ease,border-color .18s ease,background .18s ease,color .18s ease}
  .profile-section-quick-button:hover,.profile-section-quick-button:focus-visible{border-color:#2b6e8f;background:#2b6e8f;color:#fff;transform:translateY(-2px);outline:0}
}
.profile-preset-actions{grid-area:actions;display:flex;align-items:center;justify-content:flex-start;gap:7px;flex:0 0 auto;flex-wrap:wrap;direction:ltr}
.profile-preset-actions>button{flex:0 0 auto;white-space:nowrap;height:38px;min-height:38px;box-sizing:border-box}
.profile-preset-icon-button{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;gap:0;border-radius:50%;font-size:0;line-height:1}
.profile-preset-action-icon{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.profile-preset-share{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;gap:0;border-radius:50%}
.profile-preset-share .social-icon{width:16px;height:16px;flex:0 0 16px}
.profile-preset-share.copied{border-color:#4f7b72;background:#edf7f1;color:#315e53}
.profile-preset-delete-dialog{width:min(92vw,430px);padding:0;border:0;border-radius:18px;background:transparent;color:var(--ink);box-shadow:0 24px 80px rgba(15,35,48,.35)}
.profile-preset-delete-dialog::backdrop{background:rgba(14,35,45,.58);backdrop-filter:blur(3px)}
.profile-preset-delete-dialog[hidden]{display:none}
.profile-preset-delete-card{position:relative;padding:26px 24px 22px;border:1px solid rgba(201,110,77,.28);border-radius:18px;background:linear-gradient(145deg,#fffdf9,#fff3eb);direction:rtl;text-align:right}
.profile-preset-delete-card h3{margin:0 0 9px;color:#163547;font:900 21px/1.2 Rubik,Assistant,Arial,sans-serif}
.profile-preset-delete-message{margin:0;color:#55707d;font:600 15px/1.5 Assistant,Arial,sans-serif;overflow-wrap:anywhere}
.profile-preset-delete-close{position:absolute;inset:9px auto auto 9px;width:32px;height:32px;border:1px solid rgba(43,110,143,.2);border-radius:50%;background:#fff;color:#2b6e8f;font-size:22px;line-height:1;cursor:pointer}
.profile-preset-delete-close:hover{background:#edf5f4;border-color:#2b6e8f;transform:translateY(-1px)}
.profile-preset-delete-actions{display:flex;justify-content:flex-start;gap:8px;margin-top:20px;direction:ltr}
.profile-preset-delete-actions button{min-height:40px;padding:8px 17px}
.profile-preset-delete-actions .profile-danger-button{border-color:#bd5b42;background:#bd5b42;color:#fff}
.profile-preset-delete-actions .profile-danger-button:hover{border-color:#9f4935;background:#9f4935}
.profile-preset-form-actions{display:flex;grid-column:1/-1;align-items:center;gap:8px;flex-wrap:wrap}
.profile-preset-form-actions .profile-secondary-button{min-height:42px;padding:9px 16px}
.profile-analytics-summary{display:flex;gap:14px;flex-wrap:wrap;margin:14px 0 6px}.profile-analytics-legend-item{font-size:.86rem;font-weight:700;color:var(--metric-color,#334);border-inline-start:4px solid var(--metric-color,#334);padding-inline-start:7px}
.profile-analytics-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px;padding:10px 0;border-top:1px solid rgba(22,53,71,.1);border-bottom:1px solid rgba(22,53,71,.1);direction:rtl}.profile-analytics-metric-toggles,.profile-analytics-range{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.profile-analytics-toggle,.profile-analytics-range-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:34px;padding:6px 10px;border:1px solid rgba(22,53,71,.18);border-radius:999px;background:#fffdf9;color:#163547;font:800 13px Assistant,Arial,sans-serif;cursor:pointer;transition:transform .18s ease,background .18s ease,border-color .18s ease,color .18s ease}.profile-analytics-toggle:hover:not(:disabled),.profile-analytics-range-button:hover{border-color:#2b6e8f;background:#edf5f4;transform:translateY(-1px)}.profile-analytics-toggle[aria-pressed=true],.profile-analytics-range-button[aria-pressed=true]{border-color:#2b6e8f;background:#2b6e8f;color:#fff}.profile-analytics-toggle:disabled{cursor:default;opacity:.4}.profile-analytics-toggle:focus-visible,.profile-analytics-range-button:focus-visible{outline:3px solid rgba(239,170,90,.6);outline-offset:2px}.profile-analytics-swatch{width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 2px rgba(255,255,255,.8)}.profile-analytics-scale-note{margin-inline-start:auto;color:#60717b;font-size:.82rem;font-weight:700}.profile-analytics-chart{position:relative;width:100%;min-height:180px;overflow:visible}.profile-analytics-chart svg{display:block;width:100%;height:auto;overflow:visible}.profile-analytics-grid-line{stroke:rgba(22,53,71,.14);stroke-width:1;stroke-dasharray:4 6}.profile-analytics-axis-note{fill:#60717b;font:700 12px Assistant,Arial,sans-serif}.profile-analytics-x-label{fill:#60717b;font:700 12px Assistant,Arial,sans-serif}.profile-analytics-line{vector-effect:non-scaling-stroke}.profile-analytics-area{pointer-events:none}.profile-analytics-point{cursor:pointer;vector-effect:non-scaling-stroke;transition:r .15s ease,stroke-width .15s ease}.profile-analytics-point:focus-visible{outline:3px solid #efaa5a;outline-offset:3px}.profile-analytics-tooltip{position:absolute;z-index:3;min-width:190px;max-width:min(280px,calc(100% - 20px));padding:11px 13px;border:1px solid rgba(255,255,255,.65);border-radius:11px;background:rgba(22,53,71,.97);color:#fffdf9;box-shadow:0 9px 24px rgba(22,53,71,.23);direction:rtl;text-align:right;pointer-events:none}.profile-analytics-tooltip[hidden]{display:none}.profile-analytics-tooltip strong,.profile-analytics-tooltip>span{display:block}.profile-analytics-tooltip strong{font:900 14px/1.2 Rubik,Arial,sans-serif}.profile-analytics-tooltip>span{margin-top:4px;color:#d9edf1;font-weight:700;line-height:1.35}.profile-analytics-tooltip ul{display:grid;gap:3px;margin:8px 0 0;padding:0;list-style:none;color:#fff;font-size:13px;line-height:1.35}.profile-analytics-empty{display:grid;justify-items:center;gap:13px;min-height:190px;padding:25px 18px;border:1px dashed rgba(43,110,143,.28);border-radius:12px;background:#f3f8f7;color:#55707d;text-align:center}.profile-analytics-empty p,.profile-analytics-empty-copy{margin:0;font-weight:700;line-height:1.45}.profile-analytics-empty-bars{display:flex;align-items:end;justify-content:center;gap:7px;width:min(240px,70%);height:78px;padding:8px 10px;border-bottom:2px solid rgba(43,110,143,.26)}.profile-analytics-empty-bars span{display:block;width:20px;border-radius:5px 5px 0 0;background:linear-gradient(180deg,rgba(201,110,77,.45),rgba(79,123,114,.22));animation:profileAnalyticsPulse 1.4s ease-in-out infinite alternate}.profile-analytics-empty-bars span:nth-child(2){animation-delay:.12s}.profile-analytics-empty-bars span:nth-child(3){animation-delay:.24s}.profile-analytics-empty-bars span:nth-child(4){animation-delay:.36s}.profile-analytics-empty-bars span:nth-child(5){animation-delay:.48s}@keyframes profileAnalyticsPulse{from{opacity:.45;transform:scaleY(.8);transform-origin:bottom}to{opacity:.95;transform:scaleY(1);transform-origin:bottom}}
.profile-analytics-chart{width:100%;min-height:180px;overflow:visible}.profile-analytics-chart svg{display:block;width:100%;height:auto}.analytics-grid-line{stroke:rgba(22,53,71,.14);stroke-width:1;stroke-dasharray:4 6}
.profile-analytics-chart{padding:12px 12px 20px;box-sizing:border-box}
.gallery-skeleton-group{opacity:.8}.gallery-skeleton{display:grid;gap:12px;min-height:180px;padding:12px;border-radius:16px;background:rgba(255,255,255,.65);overflow:hidden}.gallery-skeleton span,.skeleton-deal-card span{display:block;border-radius:8px;background:linear-gradient(100deg,rgba(202,190,174,.3) 25%,rgba(255,255,255,.8) 45%,rgba(202,190,174,.3) 65%);background-size:300% 100%;animation:kalimeraSkeleton 1.25s ease-in-out infinite}.gallery-skeleton span:first-child,.skeleton-deal-image{height:110px}.gallery-skeleton span:nth-child(2){height:16px;width:70%}.gallery-skeleton span:nth-child(3){height:12px;width:88%}.skeleton-deal-card{padding:12px;display:grid;gap:10px;min-height:290px}.skeleton-deal-image{height:150px}.skeleton-deal-line{height:14px;width:84%}.skeleton-deal-line.wide{width:95%}.skeleton-deal-line.short{width:55%}@keyframes kalimeraSkeleton{0%{background-position:100% 0}100%{background-position:-100% 0}}
@media(max-width:700px){.profile-preset-row{gap:3px 9px;min-height:82px;padding:10px}.profile-preset-summary{gap:5px}.profile-preset-summary strong{font-size:.92rem}.profile-preset-summary .profile-preset-type,.profile-preset-summary .profile-preset-machine{font-size:.82rem}.profile-preset-actions{gap:5px}.profile-preset-actions>button{flex:0 0 auto;width:34px;height:34px;min-height:34px}.profile-preset-icon-button{width:34px;height:34px}.profile-preset-date{font-size:.72rem}.profile-presets-card .profile-card-heading> .profile-secondary-button{width:100%}.profile-analytics-chart{min-height:130px}.brew-preset-tools,.recipe-share-tools{font-size:.9rem}.profile-preset-form{grid-template-columns:1fr}.profile-preset-form .profile-preset-details-fields{grid-template-columns:1fr}.profile-preset-form .profile-primary-button,.profile-preset-form-actions .profile-secondary-button{width:100%}}

/* Profile cover images share the same calm card language as the avatar. */
.profile-cover,.public-profile-cover{position:relative;overflow:hidden;border-radius:14px;background:linear-gradient(135deg,#e6f0ef,#f7e7d5);box-shadow:inset 0 0 0 1px rgba(22,53,71,.12)}
.profile-identity-card,.public-profile-card{overflow:hidden}
.profile-cover{min-height:270px;margin:-14px -14px 20px;aspect-ratio:2.5/1}
.profile-cover-empty{position:absolute;inset:0;display:grid;place-items:center;margin:0;padding:20px;color:#55707d;font:800 17px Assistant,Arial,sans-serif;text-align:center}
.profile-cover-empty[hidden]{display:none}
.profile-cover-image,.public-profile-cover-image{display:block;width:100%;height:100%;object-fit:cover}
.profile-cover-image[hidden],.public-profile-cover-image[hidden]{display:none}
.profile-cover-actions{position:absolute;inset-inline-end:12px;bottom:12px;display:flex;align-items:center;gap:8px;z-index:2}
.profile-cover-edit,.profile-cover-remove{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:8px 12px;border:1px solid rgba(255,255,255,.75);border-radius:9px;background:rgba(22,53,71,.78);color:#fff;font:800 14px Assistant,Arial,sans-serif;cursor:pointer;backdrop-filter:blur(5px);transition:transform .18s ease,background .18s ease}
.profile-cover-edit:hover,.profile-cover-remove:hover{transform:translateY(-2px);background:rgba(22,53,71,.92)}
.profile-cover-edit,.profile-cover-remove{width:36px;height:36px;min-height:36px;padding:0;justify-content:center;gap:0}
.profile-cover-edit svg,.profile-cover-remove svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}
.profile-cover-edit input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.public-profile-cover{height:320px;margin:-28px -28px 25px;border-radius:16px 16px 10px 10px}
.profile-preset-equipment-picker{grid-column:1/-1}
.profile-preset-equipment-picker select{margin-top:0}
@media(max-width:700px){.profile-cover{min-height:210px;margin:-18px -18px 17px;aspect-ratio:1.65/1}.profile-cover-actions{inset-inline-end:8px;bottom:8px}.profile-cover-edit,.profile-cover-remove{min-height:33px;padding:7px 9px;font-size:13px}.profile-cover-edit span{display:none}.public-profile-cover{height:230px;margin:-18px -18px 20px}.profile-preset-equipment-picker{grid-column:auto}}
@media(max-width:700px){
 body.profile-page #profile{padding-top:0!important}
 body.profile-page .profile-identity-card{padding-top:0;border-radius:0 0 14px 14px}
 body.profile-page .profile-identity-card .profile-cover{width:calc(100% + 36px);margin:0 -18px 17px;border-radius:0}
 body.profile-page .profile-cover-actions{inset-inline-end:10px;bottom:10px;display:flex;align-items:center;justify-content:flex-start;gap:8px;max-width:calc(100% - 20px);overflow:visible}
 body.profile-page .profile-cover-actions>*{box-sizing:border-box;flex:0 0 36px;width:36px;height:36px;min-height:36px}
}
@media(max-width:700px){.profile-analytics-controls{align-items:flex-start;gap:8px}.profile-analytics-metric-toggles,.profile-analytics-range{width:100%}.profile-analytics-scale-note{width:100%;margin-inline-start:0}.profile-analytics-toggle,.profile-analytics-range-button{min-height:32px;padding:6px 9px;font-size:12px}.profile-analytics-tooltip{min-width:170px;padding:9px 10px;font-size:12px}}
.brew-detail[type="number"],.brew-detail[type="date"],.calculator-card input[type="number"],.calculator-card input[type="date"]{direction:ltr;text-align:end;font-variant-numeric:tabular-nums}

/* Quick ratio presets in the guide calculator should read as deliberate,
   touch-friendly controls rather than unstyled browser buttons. */
.calculator-ratio-presets{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:14px 0 4px;direction:ltr}
.calculator-ratio-presets::before{content:'יחס מהיר';margin-inline-end:2px;color:#55707d;font:800 13px Assistant,Arial,sans-serif;direction:rtl}
.calculator-ratio-presets button{min-width:70px;min-height:38px;padding:7px 14px;border:1px solid rgba(43,110,143,.28);border-radius:999px;background:#fffdf9;color:#2b6e8f;font:900 14px Assistant,Arial,sans-serif;letter-spacing:.01em;cursor:pointer;box-shadow:0 2px 6px rgba(22,53,71,.08);transition:transform .18s ease,background .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease}
.calculator-ratio-presets button:hover,.calculator-ratio-presets button:focus-visible{border-color:#2b6e8f;background:#edf5f4;color:#163547;transform:translateY(-2px);box-shadow:0 5px 12px rgba(22,53,71,.14);outline:none}
.calculator-ratio-presets button.active{border-color:#c96e4d;background:#c96e4d;color:#fff;box-shadow:0 5px 12px rgba(201,110,77,.24)}
.calculator-ratio-presets button:focus-visible{outline:3px solid rgba(239,170,90,.55);outline-offset:2px}

/* Keep the gallery, guides, and troubleshooting content closer to the
   preceding section so the page does not feel top-heavy. */
.archive,.coffee-hub,.troubleshooting{padding-top:52px!important}
@media(max-width:700px){
 .calculator-ratio-presets{gap:7px;margin-top:11px}
 .calculator-ratio-presets::before{width:100%;margin:0 0 1px;text-align:right}
 .calculator-ratio-presets button{min-width:64px;min-height:36px;padding:6px 12px;font-size:13px}
 .archive,.coffee-hub,.troubleshooting{padding-top:34px!important}
}

/* SVG text scales with the chart viewBox. Use a larger mobile user-unit size
   so the endpoint dates remain readable on narrow screens. */
.profile-analytics-x-label{font-size:15px!important;font-weight:800!important}
.profile-analytics-y-axis-line{stroke:currentColor;stroke-width:1.5;vector-effect:non-scaling-stroke}
.profile-analytics-y-axis-tick{stroke:currentColor;stroke-width:1.5;vector-effect:non-scaling-stroke}
.profile-analytics-y-label{fill:currentColor;font:800 12px Assistant,Arial,sans-serif;font-variant-numeric:tabular-nums}.profile-analytics-y-title{fill:currentColor;font:900 11px Assistant,Arial,sans-serif}
@media(max-width:700px){.profile-analytics-x-label{font-size:34px!important;font-weight:800!important}.profile-analytics-y-label{font-size:28px!important;font-weight:800!important}.profile-analytics-y-title{font-size:18px!important}.profile-analytics-tooltip{font-size:14px}.profile-analytics-tooltip strong{font-size:15px}.profile-analytics-tooltip ul{font-size:14px}}

/* Keep chart labels clear of the plot and one another at every width. Metric
   names are controls/legend labels outside the SVG; no vertical headers are
   rendered inside the graph itself. */
.profile-analytics-chart{padding:18px 18px 28px;box-sizing:border-box}
.profile-analytics-y-title{display:none!important}
.profile-analytics-x-label{font-size:18px!important;letter-spacing:.01em;white-space:nowrap}
.profile-analytics-y-label{font-size:14px!important}
@media(max-width:700px){
  .profile-analytics-chart{padding:12px 2px 24px}
  .profile-analytics-x-label{font-size:28px!important;letter-spacing:-.015em}
  .profile-analytics-y-label{font-size:24px!important}
}

/* Saved settings use a predictable three-row layout: name, drink/machine,
   then date on the left and actions on the right. */
.profile-preset-row{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto;grid-template-areas:"name" "summary" "meta";gap:5px;min-height:0;padding:13px 14px;direction:rtl}
.profile-preset-name{grid-area:name;min-width:0;overflow:hidden;text-align:right;direction:rtl}
.profile-preset-name .profile-preset-title{display:block;min-width:0;overflow:hidden;color:var(--ink);font-size:1rem;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}
.profile-preset-summary{grid-area:summary;justify-content:flex-start;width:100%;line-height:1.3}
.profile-preset-summary .profile-preset-type,.profile-preset-summary .profile-preset-machine{flex:0 1 auto;max-width:48%;font-size:.9rem}
.profile-preset-meta{grid-area:meta;display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;direction:ltr}
.profile-preset-date{flex:1 1 auto;text-align:left;direction:rtl}
.profile-preset-actions{justify-content:flex-end;flex:0 0 auto}
@media(max-width:700px){
  .profile-preset-row{gap:4px;padding:11px 12px}
  .profile-preset-name .profile-preset-title{font-size:.95rem}
  .profile-preset-summary .profile-preset-type,.profile-preset-summary .profile-preset-machine{font-size:.82rem}
  .profile-preset-meta{gap:8px}
}

/* Friendly, accessible name prompt used when saving a setting from coffee
   details; avoid the browser's unstyled prompt on desktop and mobile. */
.profile-preset-name-dialog{width:min(92vw,430px);padding:0;border:0;border-radius:18px;background:transparent;color:var(--ink);box-shadow:0 24px 80px rgba(15,35,48,.35)}
.profile-preset-name-dialog::backdrop{background:rgba(14,35,45,.58);backdrop-filter:blur(3px)}
.profile-preset-name-dialog[hidden]{display:none}
.profile-preset-name-card{position:relative;padding:26px 24px 22px;border:1px solid rgba(43,110,143,.26);border-radius:18px;background:linear-gradient(145deg,#fffdf9,#eef7f7);direction:rtl;text-align:right}
.profile-preset-name-card h3{margin:0 0 9px;color:#163547;font:900 21px/1.2 Rubik,Assistant,Arial,sans-serif}
.profile-preset-name-copy{margin:0 0 17px;color:#55707d;font:600 15px/1.5 Assistant,Arial,sans-serif}
.profile-preset-name-label{display:grid;gap:7px;color:#263b45;font:800 15px/1.35 Assistant,Arial,sans-serif}
.profile-preset-name-input{width:100%;min-height:44px;box-sizing:border-box;border:1px solid rgba(43,110,143,.34);border-radius:10px;background:#fff;color:#17232b;padding:9px 12px;font:600 17px Assistant,Arial,sans-serif;direction:rtl;outline:none}
.profile-preset-name-input:focus{border-color:#2b6e8f;outline:3px solid rgba(43,110,143,.18)}
.profile-preset-name-close{position:absolute;inset:9px auto auto 9px;width:32px;height:32px;border:1px solid rgba(43,110,143,.2);border-radius:50%;background:#fff;color:#2b6e8f;font-size:22px;line-height:1;cursor:pointer}
.profile-preset-name-close:hover{background:#edf5f4;border-color:#2b6e8f;transform:translateY(-1px)}
.profile-preset-name-actions{display:flex;justify-content:flex-start;gap:8px;margin-top:20px;direction:ltr}
.profile-preset-name-actions button{min-height:40px;padding:8px 17px}
@media(max-width:700px){.profile-preset-name-card{padding:23px 18px 19px}.profile-preset-name-actions{gap:7px}.profile-preset-name-actions button{flex:1}}
/* Equipment links point directly to the tagged merchant destination. */
.equipment-buy-link{display:inline-flex;align-items:center;justify-content:center;margin:0 8px;color:#b45d34;font-weight:900;text-decoration:underline;white-space:nowrap}.equipment-buy-link:hover{color:#2b6e8f}
.lightbox-brew-details-list li:has(.equipment-buy-link){position:relative;min-height:25px}
.lightbox-brew-details-list li:has(.equipment-buy-link) .lightbox-brew-key{padding-inline-end:78px}
.lightbox-brew-details-list li:has(.equipment-buy-link) .lightbox-brew-value{padding-inline-start:78px}
.lightbox-brew-details-list li:has(.equipment-buy-link) .equipment-buy-link{position:absolute;inset-inline-start:50%;top:50%;margin:0;transform:translate(-50%,-50%)}
.lightbox-brew-details-list li:has(.equipment-buy-link) .equipment-buy-link:hover{transform:translate(-50%,-50%) translateY(-1px)}
.public-equipment-item p:has(.equipment-buy-link){position:relative;min-height:24px;padding-inline-end:72px}
.public-equipment-item p:has(.equipment-buy-link) .equipment-buy-link{position:absolute;inset-inline-start:50%;top:50%;margin:0;transform:translate(-50%,-50%)}
.public-equipment-item p:has(.equipment-buy-link) .equipment-buy-link:hover{transform:translate(-50%,-50%) translateY(-1px)}
.profile-preset-summary .profile-preset-type,.profile-preset-summary .profile-preset-machine{font-size:.82rem}
.public-profile-setting p{font-size:14px}
.profile-section-quick-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:auto;min-width:45px;height:45px;min-height:45px;padding:0 13px;border:1px solid rgba(255,255,255,.72);border-radius:999px;background:rgba(18,42,53,.9);color:#fffdf9;box-shadow:0 4px 14px rgba(0,0,0,.28);font:800 14px/1 Assistant,Arial,sans-serif;white-space:nowrap;cursor:pointer;transition:border-color .18s ease,background .18s ease,color .18s ease,transform .18s ease,box-shadow .18s ease}
.profile-section-quick-button:hover,.profile-section-quick-button:focus-visible{border-color:#fff;background:#2b6e8f;color:#fff;transform:translateY(-2px);outline:0}
.profile-section-quick-icon{display:block;width:18px;height:18px;flex:0 0 18px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.9}

/* Profile navigation uses the same floating matte control language as the
   post viewer. Labels stay available through aria-label/title, while the
   controls remain compact icon-only buttons on every viewport. */
.profile-section-quick-nav{
  position:fixed!important;
  top:94px!important;
  right:12px!important;
  left:auto!important;
  z-index:1200!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:8px!important;
  width:auto!important;
  max-width:none!important;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
  background:transparent!important;
  backdrop-filter:none!important;
  transform:none!important;
  direction:rtl;
}
.profile-section-quick-button{
  display:inline-grid!important;
  place-items:center!important;
  flex:0 0 45px!important;
  width:45px!important;
  min-width:45px!important;
  max-width:45px!important;
  height:45px!important;
  min-height:45px!important;
  max-height:45px!important;
  padding:0!important;
  box-sizing:border-box;
  border:1px solid rgba(255,255,255,.55)!important;
  border-radius:999px!important;
  background:rgba(18,42,53,.5)!important;
  color:#fffdf9!important;
  box-shadow:0 4px 14px rgba(0,0,0,.28)!important;
  backdrop-filter:blur(8px);
  opacity:.92;
  font-size:0!important;
  line-height:0!important;
  white-space:nowrap;
  cursor:pointer;
  transition:border-color .18s ease,background .18s ease,color .18s ease,transform .18s ease,box-shadow .18s ease,opacity .18s ease;
}
.profile-section-quick-button span{display:none!important}
.profile-section-quick-button:hover,.profile-section-quick-button:focus-visible{
  border-color:#fff!important;
  background:rgba(43,110,143,.5)!important;
  color:#fff!important;
  opacity:1;
  transform:translateY(-2px)!important;
  outline:0;
}
.profile-section-quick-button:active{transform:translateY(0)!important}
.profile-section-quick-icon{width:19px!important;height:19px!important;flex:0 0 19px!important}
@media(max-width:700px){
  .profile-section-quick-nav{top:70px!important;right:10px!important;left:auto!important;gap:7px!important}
  .profile-section-quick-button{flex-basis:43px!important;width:43px!important;min-width:43px!important;max-width:43px!important;height:43px!important;min-height:43px!important;max-height:43px!important}
  .profile-section-quick-icon{width:18px!important;height:18px!important;flex-basis:18px!important}
}

/* Keep the floating rail out of profile cards. On wide screens it lives in
   the real outer gutter; when the gutter is too narrow it becomes a sticky
   row in the profile grid, so no permanent side padding is needed. */
@media(min-width:1200px){
  .profile-section-quick-nav{right:max(5px,calc((100vw - min(1120px,90vw))/2 - 57px))!important}
}
@media(max-width:1199px){
  .profile-section-quick-nav{
    position:sticky!important;
    top:94px!important;
    right:auto!important;
    left:auto!important;
    z-index:9!important;
    grid-column:1/-1!important;
    flex-direction:row!important;
    align-items:center!important;
    justify-content:flex-start!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    margin:0 0 4px!important;
    padding:7px 4px!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    background:rgba(255,253,249,.94)!important;
    backdrop-filter:blur(10px)!important;
    transform:none!important;
    scrollbar-width:none;
  }
  .profile-section-quick-nav::-webkit-scrollbar{display:none}
  .profile-section-quick-button{flex:0 0 45px!important}
}
@media(max-width:700px){
  .profile-section-quick-nav{
    position:fixed!important;
    top:70px!important;
    right:10px!important;
    left:auto!important;
    grid-column:auto!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:flex-start!important;
    width:auto!important;
    max-width:none!important;
    margin:0!important;
    padding:0!important;
    overflow:visible!important;
    background:transparent!important;
    backdrop-filter:none!important;
    transform:none!important;
    z-index:1200!important;
  }
  .profile-section-quick-button{flex-basis:43px!important}
}

/* Keep every single-line field at the same comfortable height as the
   water-temperature control. Exclude checkboxes, radios, ranges and files. */
:root{--kalimera-control-height:46px}
:where(input[type="text"],input[type="email"],input[type="search"],input[type="url"],input[type="password"],input[type="tel"],input[type="number"],input[type="date"],input[type="time"],input[type="month"],input[type="week"],select){box-sizing:border-box;min-height:var(--kalimera-control-height)!important}
.profile-equipment-form[hidden],.profile-equipment-form[aria-hidden="true"]{display:none!important}

/* The quick navigation is unnecessary on desktop; the page already has
   enough room for normal scrolling. On phones it fades while the user is
   touching/scrolling, without collapsing the row and shifting the page. */
@media(min-width:701px){.profile-section-quick-nav{display:none!important}}
@media(max-width:700px){
  .profile-section-quick-nav{transition:opacity .18s ease,visibility .18s ease,transform .18s ease;will-change:opacity,transform}
  .profile-section-quick-nav.is-touch-hidden{opacity:0!important;visibility:hidden!important;pointer-events:none!important;transform:translateY(-8px)!important}
}

/* The profile identity area follows a social-profile layout: the cover is
   full-bleed beneath the header, while the identity/details content remains
   readable without another card wrapper around it. */
body.profile-page .profile-identity-card{
  grid-column:1/-1!important;
  width:100vw;
  max-width:100vw;
  margin-inline:calc(50% - 50vw);
  padding:0!important;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  overflow:visible;
}
body.profile-page{overflow-x:clip}
body.profile-page .profile-identity-card .profile-cover{
  width:100%;
  margin:0;
  border-radius:0;
}
body.profile-page .profile-identity-card .profile-identity,
body.profile-page .profile-identity-card .profile-details-box{
  width:min(1120px,calc(100% - 32px));
  margin-inline:auto;
}
body.profile-page .profile-identity-card .profile-identity{padding-top:22px}
body.profile-page .profile-identity-card .profile-details-box{
  margin-top:18px;
  padding:0 0 22px;
  border:0;
  border-radius:0;
  background:transparent;
}
body.profile-page .profile-identity-card .profile-cover-actions{
  z-index:4;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  overflow:visible;
}
body.profile-page .profile-identity-card .profile-cover-actions>*{
  box-sizing:border-box;
  flex:0 0 36px;
  width:36px;
  height:36px;
  min-height:36px;
  margin:0;
  overflow:visible;
  line-height:1;
}
body.profile-page .profile-identity-card .profile-details-box .profile-field-summary{
  border-color:rgba(22,53,71,.12);
  border-radius:0;
  background:transparent;
}
@media(max-width:700px){
  body.profile-page .profile-identity-card .profile-identity{padding-top:18px}
  body.profile-page .profile-identity-card .profile-details-box{margin-top:14px;padding-bottom:18px}
}
/* Profile identity sizing: keep the cover and avatar prominent on both routes. */
.profile-avatar-wrap{width:124px;height:124px;flex-basis:124px}
.public-profile-avatar .inline-profile-avatar{width:120px;height:120px}
@media(max-width:700px){.profile-avatar-wrap{width:104px;height:104px;flex-basis:104px}.public-profile-avatar .inline-profile-avatar{width:100px;height:100px}}

/* Public profiles use the same social-profile presentation as the private
   profile: a full-bleed cover followed by a centered identity/content column,
   instead of nesting the cover and identity inside a card. */
.public-profile-page{
  width:100%;
  max-width:none!important;
  margin:0 auto;
  padding:0 0 86px!important;
  overflow-x:clip;
}
.public-profile-page .public-profile-card{
  width:100vw;
  max-width:100vw;
  margin-inline:calc(50% - 50vw);
  padding:0!important;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  overflow:visible;
}
.public-profile-page .public-profile-cover{
  width:100%;
  height:230px;
  margin:0;
  border-radius:0;
  box-shadow:none;
}
.public-profile-page .public-profile-identity,
.public-profile-page .public-profile-about,
.public-profile-page .public-profile-stats,
.public-profile-page .public-profile-settings,
.public-profile-page .public-profile-equipment,
.public-profile-page .public-profile-gallery,
.public-profile-page #publicProfileStatus{
  width:min(1120px,calc(100% - 32px));
  margin-inline:auto;
}
.public-profile-page .public-profile-identity{
  padding:24px 0 0;
}
.public-profile-page .public-profile-about,
.public-profile-page .public-profile-settings,
.public-profile-page .public-profile-equipment,
.public-profile-page .public-profile-gallery{
  margin-top:28px;
}
.public-profile-page .public-profile-avatar .inline-profile-avatar{
  width:136px;
  height:136px;
}
.public-profile-page .public-profile-stats{
  margin-top:26px;
}
@media(max-width:700px){
  .public-profile-page{padding-bottom:56px!important}
  .public-profile-page .public-profile-cover{height:170px}
  .public-profile-page .public-profile-identity,
  .public-profile-page .public-profile-about,
  .public-profile-page .public-profile-stats,
  .public-profile-page .public-profile-settings,
  .public-profile-page .public-profile-equipment,
  .public-profile-page .public-profile-gallery,
  .public-profile-page #publicProfileStatus{
    width:calc(100% - 32px);
  }
  .public-profile-page .public-profile-identity{padding-top:18px}
  .public-profile-page .public-profile-avatar .inline-profile-avatar{
    width:112px;
    height:112px;
  }
}

/* Desktop covers should sit directly below the sticky header without a
   large card gap, while keeping the social-profile proportions compact. */
@media(min-width:701px){
  body.profile-page #profile{padding-top:0!important}
  body.profile-page .profile-identity-card .profile-cover,
  .public-profile-page .public-profile-cover{
    height:220px;
    min-height:220px;
    aspect-ratio:auto;
    margin-top:0;
  }
  .public-profile-page{padding-top:0!important}
}

@media(max-width:700px){
  body.profile-page .profile-identity-card .profile-cover,
  .public-profile-page .public-profile-cover{
    height:150px!important;
    min-height:150px!important;
    aspect-ratio:auto!important;
  }
}

/* Keep the profile contact and about fields in one visual language. Both use
   the same label/value rhythm, card surface, border, and readable type so
   the four pieces no longer look like unrelated controls. */
.profile-details-box .profile-email-row,
.profile-details-box .profile-details-view .profile-field-summary{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:6px;
  align-items:start;
  margin:0;
  padding:13px 14px;
  border:1px solid rgba(22,53,71,.13);
  border-radius:10px;
  background:linear-gradient(135deg,#edf5f4,#f8fbf9);
  direction:rtl;
}
.profile-details-box .profile-email-row{margin-bottom:12px}
.profile-details-box .profile-email-label,
.profile-details-box .profile-details-view .profile-field-summary-label{
  display:block;
  margin:0;
  color:#55707d;
  font:800 13px/1.2 Assistant,Arial,sans-serif;
}
.profile-details-box .profile-email{
  margin:0;
  color:#163547;
  font:700 16px/1.35 Assistant,Arial,sans-serif;
  direction:ltr;
  text-align:right;
}
.profile-details-box .profile-details-view .profile-field-summaries{gap:12px;margin:0}
.profile-details-box .profile-details-view .profile-field-summary{border-top:1px solid rgba(22,53,71,.13)}
.profile-details-box .profile-details-view .profile-field-summary:first-child{border-top:1px solid rgba(22,53,71,.13)}
.profile-details-box .profile-details-view .profile-field-summary-row{align-items:baseline}
.profile-details-box .profile-details-view .profile-field-summary-row p{
  margin:0;
  color:#163547;
  font:600 16px/1.45 Assistant,Arial,sans-serif;
}

/* Give desktop social profiles a little more breathing room in the cover
   without changing the compact mobile presentation. */
@media(min-width:701px){
  body.profile-page .profile-identity-card .profile-cover,
  .public-profile-page .public-profile-cover{
    height:250px;
    min-height:250px;
  }
}
