*{box-sizing:border-box}
:root{--bg:#f7f5ef;--card:#fff;--text:#242424;--muted:#858585;--line:#e8e4dc;--accent:#222;--danger:#b3261e;--ok:#2f7d4a;--warn:#9a6a16}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:Arial,"Noto Sans KR",sans-serif}
button,input,textarea,select{font:inherit}button{cursor:pointer}body{padding-bottom:env(safe-area-inset-bottom)}
#app{max-width:1100px;margin:auto;padding:20px 20px 60px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:22px}.brand{display:flex;align-items:center;gap:10px;border:0;background:transparent;padding:4px 0;text-align:left;color:var(--text)}.brand-icon{font-size:30px}.brand strong{display:block;font-size:20px}.brand small{display:block;color:var(--muted);margin-top:3px}.top-actions{display:flex;align-items:center;gap:8px;min-width:0}.icon-button{width:44px;height:44px;border:1px solid var(--line);border-radius:12px;background:var(--card);font-size:20px}.sync-status{font-size:12px;color:var(--muted);white-space:nowrap}.sync-status.ok{color:var(--ok)}.sync-status.busy{color:var(--warn)}
.page-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:18px 0}.page-head h1{font-size:28px;margin:0}.page-head p{margin:6px 0 0;color:var(--muted)}.head-actions{display:flex;flex-wrap:wrap;gap:9px;justify-content:flex-end}.search{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:0 14px;height:50px;margin-bottom:26px}.search input{border:0;outline:0;width:100%;background:transparent;min-width:0}.folder-grid,.food-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.folder-card,.food-card{border:1px solid var(--line);background:var(--card);border-radius:18px;overflow:hidden;transition:.15s ease}.folder-card{padding:22px;min-height:145px;text-align:left}.folder-card:hover,.food-card:hover{box-shadow:0 8px 24px rgba(0,0,0,.06);transform:translateY(-1px)}.folder-icon{font-size:42px;margin-bottom:15px}.folder-name{font-size:18px;font-weight:700}.folder-count{color:var(--muted);font-size:13px;margin-top:6px}.actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:18px}.primary,.secondary,.danger,.small-button{border-radius:11px;padding:11px 15px;border:1px solid var(--line);background:var(--card)}.primary{background:#222;color:#fff;border-color:#222}.danger{color:var(--danger)}.small-button{padding:8px 11px;font-size:13px}.primary:disabled,.secondary:disabled,.danger:disabled,.small-button:disabled{opacity:.55;cursor:wait}.food-thumb{width:100%;aspect-ratio:1/1;object-fit:cover;background:#eee;display:block}.food-no-image{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1/1;font-size:42px;background:#eee}.food-info{padding:13px 14px;position:relative}.food-name{font-weight:700}.food-date{color:var(--muted);font-size:12px;margin-top:6px}.food-rating{display:inline-flex;align-items:center;gap:4px;margin-top:7px;font-size:13px;font-weight:700}.food-rating span{font-size:14px}.back{border:0;background:transparent;padding:7px 0;color:#666}.empty{text-align:center;padding:70px 15px;color:var(--muted)}.empty .emoji{font-size:52px;margin-bottom:12px}
.detail-head{display:flex;gap:10px;align-items:center;margin-bottom:18px}.detail-head h1{margin:0;font-size:28px}.hero{width:100%;max-height:520px;object-fit:cover;border-radius:18px;background:#eee}.detail-section{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;margin-top:14px;box-shadow:0 1px 0 rgba(0,0,0,.02)}.detail-section h3{margin:0 0 12px}.detail-list{display:flex;flex-direction:column;gap:0}.detail-row{display:grid;grid-template-columns:130px 1fr;gap:16px;padding:12px 0;border-bottom:1px solid var(--line);line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}.detail-row:last-child{border-bottom:0}.detail-row a{color:inherit}.muted,.hint{color:var(--muted);font-size:13px}.extra-photo-grid,.extra-preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.extra-photo,.extra-preview-item img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:#eee}.extra-preview-item{position:relative}.remove-extra,.remove-edit-extra{position:absolute;right:5px;top:5px;width:28px;height:28px;border:0;border-radius:50%;background:rgba(0,0,0,.7);color:#fff;font-size:18px;line-height:1}
.form{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px;max-width:720px}.field{margin-bottom:18px}.field label{display:block;font-weight:700;font-size:14px;margin-bottom:7px}.field input,.field textarea,.field select{width:100%;border:1px solid var(--line);border-radius:10px;background:#fff;padding:12px;outline:0}.field textarea{min-height:100px;resize:vertical}.preview{width:100%;max-height:360px;object-fit:cover;border-radius:14px;margin-top:10px}.tag-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.tag-chip{display:inline-flex;align-items:center;max-width:100%;padding:5px 9px;border-radius:999px;background:#f1eee7;border:1px solid var(--line);font-size:12px;line-height:1.1;color:#5e5a52;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tag-chip.more{background:#fff}.rating-view{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rating-stars{font-size:20px;letter-spacing:2px;line-height:1}.rating-number{font-size:13px;color:var(--muted)}.link-button{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:#faf9f6;color:var(--text)!important;text-decoration:none;font-weight:700;font-size:13px}.link-button:hover{background:#f1eee7}
.modal.hidden{display:none}.modal{position:fixed;inset:0;z-index:20;overflow:auto}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.35)}.modal-card{position:relative;z-index:1;max-width:620px;margin:5vh auto;background:var(--card);border-radius:18px;padding:20px;max-height:90vh;overflow:auto}.modal-head{display:flex;justify-content:space-between;align-items:center;position:sticky;top:-20px;background:var(--card);padding:4px 0 12px;z-index:2}.modal-head h2{margin:0}.backup-box{padding:14px 0}.backup-box+.backup-box{border-top:1px solid var(--line);margin-top:8px}.backup-box p{margin:0 0 10px}.backup-file{display:block;width:100%;margin:12px 0;padding:10px;border:1px solid var(--line);border-radius:10px;background:#fff}
.auth-wrap{max-width:460px;margin:70px auto 0}.auth-card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:24px}.auth-card h1{margin:0 0 8px;font-size:28px}.auth-card>p{margin:0 0 22px;color:var(--muted);line-height:1.55}.auth-note{margin-top:14px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#faf9f6;font-size:13px;line-height:1.55;color:#666}.auth-message{min-height:22px;margin-top:12px;font-size:13px}.auth-message.error{color:var(--danger)}.auth-message.ok{color:var(--ok)}.account-email{font-size:13px;overflow-wrap:anywhere}.cloud-banner{display:flex;align-items:center;gap:8px;padding:10px 12px;margin-bottom:14px;border:1px solid var(--line);border-radius:12px;background:#fff;font-size:13px;color:#666}.cloud-dot{width:8px;height:8px;border-radius:50%;background:var(--ok);flex:0 0 auto}.progress-box{padding:12px;border:1px solid var(--line);border-radius:12px;background:#faf9f6;margin-top:12px;font-size:13px;line-height:1.5}.danger-zone{border-top:1px solid var(--line);margin-top:16px;padding-top:16px}
@media(max-width:700px){#app{padding:14px 14px 45px}.topbar{align-items:flex-start}.brand strong{font-size:18px}.sync-status{display:none}.page-head{align-items:flex-start}.head-actions{max-width:210px}.head-actions button{flex:1 1 auto}.folder-grid,.food-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.folder-card{padding:17px;min-height:125px}.folder-icon{font-size:34px}.folder-name{font-size:16px}.page-head h1{font-size:24px}.extra-photo-grid,.extra-preview-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.modal-card{margin:3vh 12px;max-height:94vh}.hero{max-height:55vh}.detail-row{grid-template-columns:1fr;gap:3px}.tag-chip{font-size:11px}.rating-stars{font-size:18px}.link-button{width:100%;justify-content:flex-start}.auth-wrap{margin-top:28px}.auth-card{padding:20px}}
@media(max-width:380px){.food-grid{grid-template-columns:1fr 1fr}.food-name{font-size:14px}.top-actions{gap:5px}.icon-button{width:40px;height:40px}}
