@import"https://fonts.googleapis.com/css2?family=Gaegu:wght@300;400;700&display=swap";.login-container{min-height:100vh;display:flex;justify-content:center;align-items:center;background-color:var(--color-background);padding:20px}.login-box{background:var(--color-white);padding:48px 40px;border-radius:var(--radius-lg);box-shadow:0 20px 60px #0000000d;width:100%;max-width:420px;animation:slideUp .6s cubic-bezier(.16,1,.3,1)}.login-title{text-align:center;color:var(--color-text);font-size:32px;margin-bottom:40px;font-weight:700;letter-spacing:-.5px}.type-selector{display:flex;gap:12px;margin-bottom:32px}.type-button{flex:1;padding:16px;border:1px solid var(--color-border);background:var(--color-background);border-radius:var(--radius-md);font-size:18px;font-weight:600;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease}.type-button:hover{background-color:#e8ebed}.type-button.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary);box-shadow:0 4px 12px #ff2e634d}.input-group{margin-bottom:32px}.input-group label{display:block;margin-bottom:10px;color:var(--color-text-secondary);font-weight:600;font-size:14px}.input-group input{width:100%;padding:16px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:16px;background-color:var(--color-background);color:var(--color-text);transition:all .2s ease}.input-group input:focus{outline:none;border-color:var(--color-primary);background-color:var(--color-white);box-shadow:0 0 0 2px #ff2e631a}.input-group input::placeholder{color:#b0b8c1}.login-button{width:100%;padding:18px;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-md);font-size:17px;font-weight:600;cursor:pointer;transition:all .2s ease}.login-button:hover:not(:disabled){background:var(--color-primary-dark);transform:translateY(-1px)}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{background:#ffc2d1;cursor:not-allowed}.error-message{background:#fff0f3;color:#d61c4e;padding:14px;border-radius:var(--radius-sm);margin-bottom:24px;font-size:14px;text-align:center;font-weight:500;animation:shake .4s cubic-bezier(.36,.07,.19,.97) both}.signup-link-button{width:100%;margin-top:12px;padding:16px;border-radius:var(--radius-md);border:1px solid var(--color-border);background-color:#fff;color:var(--color-text);font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease}.signup-link-button:hover{background-color:var(--color-background);border-color:var(--color-text-secondary)}.year-stats-container{display:flex;flex-direction:row;justify-content:space-between;align-items:flex-start;width:100%}.stats-left-col{display:flex;flex-direction:column;gap:12px;align-items:flex-start}.stats-right-col{display:flex;flex-direction:column;align-items:flex-end}.profile-info{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.nickname{font-size:16px;font-weight:400;color:var(--color-text)}.logout-text-btn{background:none;border:none;padding:0;font-size:14px;color:var(--color-text-secondary);cursor:pointer}.logout-text-btn:hover{text-decoration:underline}.total-stats{text-align:left}.total-days{font-size:24px;font-weight:700;color:#000;margin:0;line-height:1.2}.year-month-stats{font-size:16px;font-weight:600;color:var(--color-text)}.year-month-stats{font-size:24px;font-weight:700;color:var(--color-primary);margin:0;line-height:1.2}.anniversary-boxes{display:flex;gap:12px;margin-top:0}.anniversary-box{display:flex;justify-content:space-between;align-items:center;padding:0;background-color:transparent;font-size:14px;width:fit-content;gap:12px}.anniversary-days{font-weight:600;color:#000}.anniversary-dday{font-weight:700;color:#000}.calendar-container{background:#fff;border-radius:20px;padding:24px;box-shadow:0 2px 12px #0000000a}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.calendar-title{font-size:18px;font-weight:700;color:var(--color-text);margin:0}.calendar-nav-btn{background:none;border:none;font-size:24px;color:var(--color-text-secondary);cursor:pointer;padding:4px 12px;border-radius:8px;transition:all .2s ease}.calendar-nav-btn:hover{background-color:#f2f4f6;color:var(--color-text)}.calendar-nav-btn:active{transform:scale(.95)}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:12px}.calendar-weekday{text-align:center;font-size:13px;font-weight:600;color:var(--color-text-secondary);padding:8px 0}.calendar-weekday.sunday{color:var(--color-primary)}.calendar-weekday.saturday{color:#4a90e2}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.calendar-day{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:12px;cursor:pointer;transition:all .2s ease;position:relative;min-height:42px}.calendar-day:hover{background-color:#f2f4f6}.calendar-day.other-month{opacity:.3}.calendar-day.today{background-color:var(--color-primary);color:#fff;font-weight:700}.calendar-day.today:hover{background-color:var(--color-primary-dark)}.day-number{font-size:14px;font-weight:500;color:var(--color-text)}.calendar-day.today .day-number{color:#fff}.calendar-day.other-month .day-number{color:var(--color-text-secondary)}.date-with-heart{position:relative;display:flex;justify-content:center;align-items:center;width:100%;height:100%}.date-heart{font-size:2.5rem;position:absolute;line-height:1}.day-number-in-heart{position:relative;z-index:1;font-weight:700;font-size:.9rem}.date-with-heart.brief_meeting .date-heart,.date-with-heart.brief_meeting .day-number-in-heart{color:#191f28}.date-with-heart.regular_date .date-heart,.date-with-heart.regular_date .day-number-in-heart,.date-with-heart.anniversary_date .date-heart{color:var(--color-primary)}.date-with-heart.anniversary_date .day-number-in-heart{color:#fff}@keyframes rainbow-color{0%{color:red}15%{color:#ff7f00}30%{color:#ff0}45%{color:#0f0}60%{color:#00f}75%{color:indigo}90%{color:#9400d3}to{color:red}}@keyframes twinkle-scale{0%,to{transform:scale(1);filter:brightness(100%)}50%{transform:scale(1.15);filter:brightness(120%)}}.date-with-heart.relationship_date .date-heart{animation:rainbow-color 3s linear infinite,twinkle-scale 1.5s ease-in-out infinite}.date-with-heart.relationship_date .day-number-in-heart{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}.calendar-day.today .date-with-heart.brief_meeting .date-heart,.calendar-day.today .date-with-heart.brief_meeting .day-number-in-heart,.calendar-day.today .date-with-heart.regular_date .date-heart,.calendar-day.today .date-with-heart.regular_date .day-number-in-heart,.calendar-day.today .date-with-heart.anniversary_date .date-heart{color:#fff}.calendar-day.today .date-with-heart.anniversary_date .day-number-in-heart{color:var(--color-primary)}.calendar-day.today .date-with-heart.relationship_date .day-number-in-heart{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}@media (max-width: 500px){.calendar-container{padding:16px}.calendar-day{min-height:36px}.day-number{font-size:13px}}.fullscreen-viewer-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000f2;display:flex;justify-content:center;align-items:center;z-index:2000;animation:fadeIn .2s ease-out}.fullscreen-viewer-content{position:relative;width:90%;height:90%;display:flex;justify-content:center;align-items:center}.fullscreen-close-btn{position:absolute;top:20px;right:20px;background:#ffffffe6;border:none;width:40px;height:40px;border-radius:50%;font-size:24px;cursor:pointer;color:#333;z-index:10;display:flex;align-items:center;justify-content:center;transition:all .2s ease;box-shadow:0 2px 8px #0000004d}.fullscreen-close-btn:hover{background:#fff;transform:scale(1.1)}.fullscreen-image{max-width:100%;max-height:100%;object-fit:contain;border-radius:8px;opacity:0;transform:scale(.8);transition:opacity .3s ease,transform .3s ease}.fullscreen-image.loaded{opacity:1;transform:scale(1)}.date-record-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .2s ease-out;padding:0 16px}.date-record-modal{background:#fff;width:100%;max-width:420px;max-height:85vh;border-radius:24px;padding:20px;box-shadow:0 10px 40px #0003;display:flex;flex-direction:column;position:relative;overflow:hidden}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid #f2f4f6}.modal-date{font-size:24px;font-weight:700;color:#191f28;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.header-buttons{display:flex;gap:8px;align-items:center}.modal-delete-btn{background:none;border:none;font-size:20px;cursor:pointer;padding:4px 8px;transition:opacity .2s,transform .2s}.modal-delete-btn:hover{opacity:.7;transform:scale(1.1)}.modal-delete-btn:disabled{opacity:.5;cursor:not-allowed}.modal-save-btn{background:none;border:none;font-size:16px;font-weight:600;color:var(--color-primary);cursor:pointer;padding:4px 8px;transition:opacity .2s}.modal-save-btn:hover{opacity:.8}.image-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:16px;overflow-y:auto;max-height:320px;padding:2px}.image-grid.create-mode,.image-grid.layout-4-grid,.image-grid.count-4{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr)}.image-grid.layout-1-landscape,.image-grid.layout-1-portrait,.image-grid.count-1{grid-template-columns:1fr;display:flex;justify-content:center;background-color:#f2f4f6}.image-grid.layout-1-landscape .image-slot,.image-grid.layout-1-portrait .image-slot,.image-grid.count-1 .image-slot{width:100%;height:auto;max-height:320px;aspect-ratio:auto}.image-grid.layout-1-landscape .image-slot img,.image-grid.layout-1-portrait .image-slot img,.image-grid.count-1 .image-slot img{object-fit:contain}.image-grid.layout-2-vertical{grid-template-columns:1fr 1fr;height:200px}.image-grid.layout-2-horizontal{grid-template-columns:1fr;grid-template-rows:1fr 1fr;height:320px}.image-grid.layout-3-main-left{grid-template-columns:1.5fr 1fr;grid-template-rows:repeat(2,1fr);height:320px}.image-grid.layout-3-main-left .image-slot:first-child{grid-row:span 2;height:100%}.image-grid.layout-3-main-top{grid-template-columns:1fr 1fr;grid-template-rows:1.5fr 1fr;height:320px}.image-grid.layout-3-main-top .image-slot:first-child{grid-column:span 2;height:100%}.image-grid[class*=layout-] .image-slot{aspect-ratio:auto;height:100%}.image-slot{aspect-ratio:1;border-radius:12px;overflow:hidden;position:relative;cursor:pointer;background-color:#f2f4f6;display:flex;justify-content:center;align-items:center;transition:all .2s ease}.image-slot:hover{background-color:#e5e8eb}.image-slot img{width:100%;height:100%;object-fit:cover;image-orientation:from-image}.memo-section{border:1px solid transparent;border-radius:12px;background-color:#f2f4f6;padding:16px;transition:all .2s}.memo-section:focus-within{background-color:#fff;border-color:var(--color-primary)}.memo-input{width:100%;min-height:100px;border:none;resize:none;font-size:16px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;outline:none;background:transparent;color:#191f28;line-height:1.5}.memo-input::placeholder{color:#8b95a1;opacity:.6}.memo-input:focus::placeholder{opacity:0}.date-type-selector{display:flex;gap:8px;margin-bottom:16px;overflow-x:auto;padding-bottom:4px}.date-type-btn{flex:1;padding:8px 12px;border:1px solid #e5e8eb;border-radius:8px;background:#fff;color:#8b95a1;font-size:14px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all .2s ease}.date-type-btn:hover:not(:disabled){background-color:#f2f4f6}.date-type-btn.selected{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary);font-weight:600}.date-type-btn:disabled{cursor:default;opacity:1}.date-type-btn:disabled:not(.selected){background-color:#f9fafb;color:#b0b8c1}.date-type-btn:focus{outline:none}.date-type-btn.selected:focus{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary)}.more-images-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;color:#fff;font-size:24px;font-weight:600;z-index:2}.main-page-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background-color:var(--color-background);padding:20px}.main-page-card{background:var(--color-white);padding:32px;border-radius:24px;box-shadow:0 4px 20px #0000000d;width:100%;max-width:600px;animation:slideUp .5s ease-out}.main-header-section{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.main-page-title{font-size:24px;font-weight:700;color:var(--color-text);margin:0}.logout-btn{background:none;border:none;color:var(--color-text-secondary);cursor:pointer;font-size:14px;padding:8px 12px;border-radius:8px;transition:all .2s ease}.logout-btn:hover{background-color:#f2f4f6;color:var(--color-text)}.main-content-area{display:flex;flex-direction:column;gap:24px}.stats-section,.calendar-section{width:100%}.navigation-section{display:flex;gap:12px;margin-top:8px}.nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:20px;border:none;border-radius:16px;background-color:#f2f4f6;color:var(--color-text);cursor:pointer;transition:all .2s ease;font-family:inherit}.nav-btn:hover{background-color:var(--color-primary);color:#fff;transform:translateY(-2px);box-shadow:0 4px 12px #ff2d5533}.nav-btn:active{transform:translateY(0)}.nav-icon{font-size:28px}.nav-label{font-size:14px;font-weight:600}@media (max-width: 640px){.main-page-card{padding:24px}.main-page-title{font-size:20px}.navigation-section{flex-direction:column}.nav-btn{flex-direction:row;padding:16px}.nav-icon{font-size:24px}}:root{--primary-color: #FF6B6B;--primary-hover: #FF5252;--background-color: #F9FAFB;--text-color: #191F28;--text-secondary: #8B95A1;--border-color: #E5E8EB;--input-bg: #F2F4F6}.signup-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background-color:var(--background-color);padding:20px}.signup-card{background:#fff;padding:40px;border-radius:24px;box-shadow:0 4px 20px #0000000d;width:100%;max-width:400px;animation:slideUp .5s ease-out}.signup-title{font-size:24px;font-weight:700;color:var(--text-color);margin-bottom:8px;text-align:center}.signup-subtitle{font-size:15px;color:var(--text-secondary);text-align:center;margin-bottom:32px}.signup-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{font-size:14px;font-weight:600;color:var(--text-color);margin-left:4px}.form-group input{padding:14px 16px;border-radius:12px;border:1px solid transparent;background-color:var(--input-bg);font-size:15px;color:var(--text-color);transition:all .2s ease}.form-group input:focus{outline:none;background-color:#fff;border-color:var(--primary-color);box-shadow:0 0 0 3px #ff6b6b1a}.form-group input::placeholder{color:#b0b8c1}.error-message{color:#ff5252;font-size:13px;text-align:center;background-color:#fff0f0;padding:10px;border-radius:8px}.signup-button{margin-top:12px;padding:16px;border-radius:14px;border:none;background-color:var(--primary-color);color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:background-color .2s ease,transform .1s ease}.signup-button:hover{background-color:var(--primary-hover)}.signup-button:active{transform:scale(.98)}.admin-container{min-height:100vh;background-color:var(--color-background)}.admin-header{background:var(--color-white);padding:0 40px;height:60px;display:flex;align-items:center;border-bottom:1px solid var(--color-border)}.admin-header h1{color:var(--color-text);font-size:20px;font-weight:700}.admin-content{padding:40px;max-width:1200px;margin:0 auto}.admin-section{background:var(--color-white);border-radius:var(--radius-md);padding:24px;margin-bottom:24px;box-shadow:0 4px 20px #0000000d}.admin-section h2{font-size:18px;font-weight:700;margin-bottom:16px;color:var(--color-text)}.table-wrapper{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;padding:12px;border-bottom:2px solid var(--color-border);color:var(--color-text-secondary);font-weight:600;white-space:nowrap}td{padding:12px;border-bottom:1px solid var(--color-border);color:var(--color-text);white-space:nowrap;max-width:300px;overflow:hidden;text-overflow:ellipsis}tr:last-child td{border-bottom:none}.admin-loading,.admin-error{padding:40px;text-align:center;color:var(--color-text-secondary)}.playlist-container{display:flex;flex-direction:column;min-height:100vh;background-color:#f5f5f5}.playlist-header{display:flex;align-items:center;padding:1rem 0;background-color:#fff;box-shadow:0 2px 4px #0000001a;position:sticky;top:0;z-index:10;font-family:Gaegu,cursive}.back-button{background:transparent;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:.5rem;margin-right:1rem;color:#333;border-radius:50%;transition:background-color .2s}.back-button:hover{background-color:#0000000d}.playlist-header-inner{display:flex;align-items:center;max-width:800px;margin:0 auto;width:100%;padding:0 20px;box-sizing:border-box}.playlist-header h1{margin:0;font-size:1.8rem;color:#333;font-weight:700}.playlist-content{flex:1;padding:0 20px 20px;overflow-y:auto;max-width:800px;margin:0 auto;width:100%;box-sizing:border-box}.categories-container{display:flex;flex-direction:column;gap:24px}.category-section{background:#fff;border-radius:16px;padding:16px;box-shadow:0 2px 8px #00000014}.category-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:2px solid #f0f0f0}.category-emoji{font-size:24px}.category-name{font-size:48px;font-weight:600;color:#333}.playlist-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:20px}.playlist-item{aspect-ratio:1;background-color:#fff7d1;padding:24px;box-shadow:2px 4px 8px #0000001a;font-family:Gaegu,cursive;font-size:1.6rem;position:relative;overflow:hidden;cursor:default;transition:transform .2s;display:flex;flex-direction:column;color:#333;line-height:1.3}.playlist-item:nth-child(4n+1){background-color:#fff7d1}.playlist-item:nth-child(4n+2){background-color:#ffebf0}.playlist-item:nth-child(4n+3){background-color:#e0f7fa}.playlist-item:nth-child(4n+4){background-color:#f3e5f5}.playlist-item.clickable{cursor:pointer}.playlist-item.clickable:hover{transform:scale(1.02);z-index:1}.item-content{width:100%;height:100%;overflow:hidden}.item-text{display:-webkit-box;-webkit-line-clamp:7;line-clamp:7;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word;white-space:pre-wrap}.checked-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-15deg);font-size:5rem;color:red;opacity:.7;pointer-events:none;border:3px solid #ff0000;border-radius:50%;width:80px;height:80px;display:flex;justify-content:center;align-items:center}.checked-mark{font-size:4rem;line-height:1;margin-top:-10px;margin-left:5px}.loading{text-align:center;padding:2rem;color:#666}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .2s ease-out}.modal-content{background-color:#fff7d1;padding:40px;width:90%;max-width:500px;max-height:80vh;overflow-y:auto;border-radius:4px;box-shadow:0 10px 25px #0003;font-family:Gaegu,cursive;font-size:2rem;position:relative;animation:scaleUp .2s ease-out;white-space:pre-wrap;line-height:1.4}@keyframes scaleUp{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.fab-button{position:fixed;bottom:2rem;right:2rem;width:60px;height:60px;border-radius:50%;background-color:#ff2d55;color:#fff;border:none;box-shadow:0 4px 12px #ff2d554d;font-size:2rem;line-height:1;padding:0;display:flex;justify-content:center;align-items:center;cursor:pointer;transition:transform .2s,background-color .2s;z-index:100}.creation-modal{background-color:#fff7d1;padding:40px;width:90%;max-width:500px;height:400px;border-radius:4px;box-shadow:0 10px 25px #0003;font-family:Gaegu,cursive;position:relative;animation:scaleUp .2s ease-out;display:flex;flex-direction:column}.creation-textarea{flex:1;width:100%;border:none;background:transparent;resize:none;font-family:inherit;font-size:2rem;line-height:1.4;color:#333;outline:none}.creation-textarea::placeholder{color:#0000004d}.save-button{position:absolute;top:10px;right:10px;background:none;border:none;font-size:2rem;cursor:pointer;transition:transform .2s;padding:5px}.save-button:hover{transform:scale(1.2)}.save-button:disabled{opacity:.5;cursor:not-allowed}.check-modal{background-color:#fff;padding:30px;border-radius:16px;box-shadow:0 10px 25px #0003;text-align:center;width:80%;max-width:300px;animation:scaleUp .2s ease-out;font-family:Gaegu,cursive}.check-modal-title{font-size:2rem;margin-bottom:30px;color:#333;font-weight:700}.check-modal-buttons{display:flex;justify-content:center;gap:20px}.check-btn{padding:10px 30px;border-radius:8px;border:none;font-size:1.2rem;cursor:pointer;font-family:Gaegu,cursive;transition:transform .1s}.check-btn:active{transform:scale(.95)}.check-cancel-btn{background-color:#f0f0f0;color:#333}.check-confirm-btn{background-color:#ff2d55;color:#fff}.board-item{width:100%;display:flex;flex-direction:column;align-items:center;margin-bottom:0}.board-item.empty{height:100%;justify-content:flex-start}.empty-content{width:100%;aspect-ratio:1 / 1;border-radius:20px;display:flex;flex-direction:row;justify-content:center;align-items:center;gap:4px;background-color:#f9fafb;color:#b0b8c1}.empty-text{font-size:.7rem;color:#8b95a1;margin-bottom:4px}.empty-emoji{font-size:1.05rem}.board-content-wrapper{display:flex;flex-direction:column;align-items:flex-start;width:100%}.image-container{width:100%;aspect-ratio:1 / 1;border-radius:20px;overflow:hidden;position:relative;background-color:#f2f4f6;cursor:pointer;touch-action:pan-y;box-shadow:0 2px 8px #0000000a}.image-container.no-image{display:flex;justify-content:center;align-items:center;color:#b0b8c1}.board-item.together .image-container{aspect-ratio:2.08 / 1;border:2px solid var(--color-primary);box-shadow:0 4px 12px #ff2d5526}.board-image{width:100%;height:100%;object-fit:cover;transition:transform .3s ease;image-orientation:from-image}.image-indicator{position:absolute;bottom:8px;right:8px;background-color:#0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#fff;padding:4px 8px;border-radius:12px;font-size:.75rem;font-weight:600}.board-info{margin-top:10px;width:100%;text-align:left;padding:0 4px}.food-name{font-family:Gamja Flower,cursive;font-size:1.2rem;font-weight:400;color:#333;margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.restaurant-name{font-family:Gamja Flower,cursive;font-size:1.2rem;font-weight:400;margin:0 0 2px;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.food-type{font-family:Gamja Flower,cursive;font-size:1rem;font-weight:400;color:#333;margin:4px 0 0;display:inline-block;background-color:transparent;padding:0;border-radius:0}.board-rating{display:flex;gap:2px;margin-bottom:4px;height:16px;align-items:center}.board-star-icon{font-size:14px;color:#e5e8eb;line-height:1}.board-star-icon.full{color:gold}.board-star-icon.half{position:relative;color:transparent}.board-star-icon.half:before{content:"★";position:absolute;left:0;top:0;width:50%;overflow:hidden;color:gold}.board-star-icon.empty{display:none}.board-star-icon.full.blue{color:#4a90e2}.board-star-icon.half.blue:before{color:#4a90e2}.board-star-icon.full.pink{color:#ff69b4}.board-star-icon.half.pink:before{color:#ff69b4}.daily-board-container{width:100%;margin:0 0 24px;padding:12px 24px;background-color:#fff;border-radius:24px;box-shadow:0 4px 24px #0000000f;position:relative;box-sizing:border-box}.date-header-container{text-align:left;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #F2F4F6}.date-header{font-family:Gamja Flower,cursive;font-size:1.8rem;font-weight:400;color:#191f28;margin:0}.board-grid-rows{display:flex;flex-direction:column;gap:16px}.meal-row{display:flex;align-items:flex-start}.meal-content{flex:1;display:flex;justify-content:center}.separate-wrapper{display:flex;gap:12px;width:100%;justify-content:space-between}.together-wrapper{width:100%;display:flex;justify-content:center}.user-board-wrapper{flex:1;width:0;display:flex;justify-content:center}.datetime-picker-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#0006;display:flex;justify-content:center;align-items:flex-end;z-index:2000;animation:fadeIn .2s ease-out}.datetime-picker{background:#fff;width:100%;max-width:500px;border-radius:16px 16px 0 0;animation:slideUpPicker .3s cubic-bezier(.16,1,.3,1);overflow:hidden}.picker-header{display:flex;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #f2f4f6}.picker-cancel-btn,.picker-confirm-btn{background:none;border:none;font-size:16px;font-weight:600;cursor:pointer;padding:8px 12px}.picker-cancel-btn{color:#8b95a1}.picker-confirm-btn{color:var(--color-primary)}.picker-content{position:relative;height:240px;overflow:hidden}.picker-highlight{position:absolute;top:50%;left:0;right:0;height:40px;transform:translateY(-50%);background-color:#0000000d;border-top:1px solid #e5e8eb;border-bottom:1px solid #e5e8eb;pointer-events:none;z-index:1}.picker-columns{display:flex;height:100%;position:relative}.picker-column{flex:1;position:relative;overflow:hidden}.picker-column:before,.picker-column:after{content:"";position:absolute;left:0;right:0;height:100px;pointer-events:none;z-index:2}.picker-column:before{top:0;background:linear-gradient(to bottom,#fff,#fff0)}.picker-column:after{bottom:0;background:linear-gradient(to top,#fff,#fff0)}.picker-column-scroll{height:100%;overflow-y:scroll;scroll-snap-type:y mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}.picker-column-scroll::-webkit-scrollbar{display:none}.picker-padding{height:100px}.picker-item{height:40px;display:flex;align-items:center;justify-content:center;font-size:16px;color:#8b95a1;scroll-snap-align:center;transition:all .2s;-webkit-user-select:none;user-select:none}.picker-item.selected{color:#191f28;font-weight:600;font-size:18px}@keyframes slideUpPicker{0%{transform:translateY(100%)}to{transform:translateY(0)}}.star-rating-input{display:flex;gap:4px;align-items:center;cursor:pointer}.star-icon{font-size:24px;color:#e5e8eb;position:relative;display:inline-block;line-height:1;transition:color .2s}.star-icon.full{color:gold}.star-icon.half{position:relative;color:#e5e8eb}.star-icon.half:before{content:"★";position:absolute;left:0;top:0;width:50%;overflow:hidden;color:gold}.star-icon:hover{transform:scale(1.1)}.star-icon.full.blue{color:#4a90e2}.star-icon.half.blue:before{color:#4a90e2}.star-icon.full.pink{color:#ff69b4}.star-icon.half.pink:before{color:#ff69b4}.board-write-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .2s ease-out;padding:0 16px}.board-write-modal{background:#fff;width:100%;max-width:420px;height:85vh;max-height:800px;border-radius:24px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 10px 40px #0003;position:relative}.selection-btn.active{background-color:var(--color-primary-light);background-color:var(--color-primary);color:#fff;border-color:var(--color-primary)}@keyframes slideUpModal{0%{transform:translateY(100%)}to{transform:translateY(0)}}.nav-arrow{position:absolute;top:50%;transform:translateY(-50%);background:#fffc;border:none;border-radius:50%;width:32px;height:32px;display:flex;justify-content:center;align-items:center;cursor:pointer;box-shadow:0 2px 8px #0000001a;z-index:2}.nav-arrow.left{left:10px}.nav-arrow.right{right:10px}.board-edit-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .2s ease-out;padding:0 16px}.board-edit-modal{background:#fff;width:100%;max-width:420px;height:85vh;max-height:800px;border-radius:24px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 10px 40px #0003;position:relative}.modal-header{padding:16px 20px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #f2f4f6}.header-right{display:flex;gap:8px;align-items:center}.modal-close-btn{background:none;border:none;font-size:24px;cursor:pointer;color:#8b95a1;padding:4px}.header-datetime-btn{background:none;border:1px solid #e5e8eb;border-radius:8px;font-size:20px;cursor:pointer;padding:6px 10px;transition:all .2s;display:flex;align-items:center;justify-content:center}.header-datetime-btn:hover{background-color:#f2f4f6}.modal-save-btn{background:none;border:none;font-size:16px;font-weight:600;color:var(--color-primary);cursor:pointer;padding:4px 8px}.modal-content-scroll{flex:1;overflow-y:auto;padding:16px 10px 0;display:flex;flex-direction:column;gap:12px}.image-section{display:flex;flex-direction:column;gap:12px}.main-image-uploader{width:100%;aspect-ratio:1;background-color:#f2f4f6;border-radius:16px;display:flex;justify-content:center;align-items:center;cursor:pointer;overflow:hidden;position:relative;border:2px solid transparent;transition:all .2s ease}.main-image-uploader.error{border-color:#ff2d55;animation:shake .4s cubic-bezier(.36,.07,.19,.97) both}.main-image-uploader img{width:100%;height:100%;object-fit:cover;image-orientation:from-image}.image-wrapper{width:100%;height:100%;position:relative}.image-wrapper img{width:100%;height:100%;object-fit:cover}.image-remove-btn{position:absolute;top:8px;right:8px;width:28px;height:28px;border-radius:50%;background:#0009;color:#fff;border:none;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;z-index:2}.image-remove-btn:hover{background:#000c;transform:scale(1.1)}.main-image-badge{position:absolute;bottom:8px;left:8px;background:var(--color-primary);color:#fff;font-size:12px;font-weight:600;padding:4px 10px;border-radius:12px;z-index:1}.upload-placeholder{display:flex;flex-direction:column;align-items:center;color:#b0b8c1}.plus-icon{font-size:48px;font-weight:300}.sub-images-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:4px}.sub-image-thumb{width:100%;aspect-ratio:1;border-radius:12px;background-color:#f2f4f6;overflow:hidden;position:relative}.sub-image-thumb img{width:100%;height:100%;object-fit:cover;image-orientation:from-image}.form-section{display:flex;flex-direction:column}.form-section>*+*{margin-top:12px}.styled-input{padding:14px 16px;border-radius:12px;border:1px solid transparent;background-color:#f2f4f6;font-size:16px;color:#191f28;transition:all .2s}.styled-input:focus{background-color:#fff;border-color:var(--color-primary);outline:none}.styled-input::placeholder{color:#8b95a1;opacity:.6;transition:opacity .2s ease}.styled-input:focus::placeholder{opacity:0}.selection-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.selection-btn{padding:10px 4px;border-radius:10px;border:1px solid #e5e8eb;background:#fff;color:#4e5968;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.selection-btn.active{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary)}.together-btn{display:flex;align-items:center;gap:4px;padding:6px 12px;border-radius:16px;border:1px solid #e5e8eb;background:#fff;color:#4e5968;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap}.together-btn.active{background-color:#fff0f5;border-color:var(--color-primary);color:var(--color-primary)}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}.upload-loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#fffffff2;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px;z-index:10;border-radius:24px}.upload-spinner{width:48px;height:48px;border:4px solid #f2f4f6;border-top:4px solid var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.upload-loading-text{font-size:16px;font-weight:600;color:var(--color-primary);margin:0}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.modal-save-btn:disabled{opacity:.5;cursor:not-allowed}.board-page{max-width:480px;margin:0 auto;background-color:transparent;min-height:100vh;padding-bottom:80px;box-shadow:none;overflow-x:hidden;position:relative}.board-list{width:100%;padding:0}.loading-indicator{text-align:center;padding:20px;color:#888;font-size:1rem}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .2s ease;overflow:hidden;touch-action:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background-color:#fff;max-width:480px;width:90%;max-height:85vh;border-radius:24px;overflow:hidden;position:relative;display:flex;flex-direction:column;box-shadow:0 8px 32px #0000001f;animation:slideUp .3s ease}.close-btn{position:absolute;top:12px;right:30px;background:#fff;border:1px solid #E5E8EB;width:36px;height:36px;border-radius:8px;font-size:1.5rem;cursor:pointer;color:#333;z-index:10;display:flex;align-items:center;justify-content:center;transition:all .2s ease;box-shadow:0 2px 4px #0000001a}.close-btn:hover{transform:translateY(-2px);box-shadow:0 4px 8px #00000026}.close-btn:active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}.modal-action-buttons{position:absolute;top:12px;right:74px;display:flex;gap:8px;z-index:10}.modal-action-btn{background:#fff;border:1px solid #E5E8EB;width:36px;height:36px;border-radius:8px;font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;box-shadow:0 2px 4px #0000001a}.modal-action-btn:hover{transform:translateY(-2px);box-shadow:0 4px 8px #00000026}.modal-action-btn:active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}.modal-body{display:flex;flex-direction:column;height:100%;overflow:hidden;padding-top:20px}.modal-image-container{width:100%;aspect-ratio:1 / 1;background-color:#f2f4f6;display:flex;align-items:center;justify-content:center;cursor:pointer;touch-action:pan-y;position:relative;overflow:hidden;padding:0 30px;box-sizing:border-box}.modal-image-loading{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#f2f4f6;z-index:5}.spinner{width:40px;height:40px;border:4px solid #E5E8EB;border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.modal-image{width:100%;height:100%;object-fit:cover;transition:opacity .3s ease;image-orientation:from-image}.modal-image-indicator{position:absolute;bottom:12px;right:12px;background-color:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#fff;padding:6px 12px;border-radius:16px;font-size:.85rem;font-weight:600}.modal-info{padding:24px 0;background-color:#fff;display:flex;flex-direction:column;gap:8px;margin:0 30px}.modal-info-item{font-family:Gamja Flower,cursive;font-size:1.2rem;font-weight:400;color:#333;margin:0}.modal-info-time{font-family:Gamja Flower,cursive;font-size:1rem;font-weight:400;color:var(--color-primary)}.fab-button{position:fixed;bottom:2rem;right:2rem;width:40px;height:40px;border-radius:50%;background-color:#ff2d55;color:#fff;border:none;box-shadow:0 4px 12px #ff2d554d;font-size:1.5rem;line-height:1;padding:0;display:flex;justify-content:center;align-items:center;cursor:pointer;transition:transform .2s,background-color .2s;z-index:100}.fab-button:hover{transform:scale(1.1);background-color:#d61c4e}.fab-button:active{transform:scale(.95)}.back-button{position:fixed;top:20px;left:20px;width:40px;height:40px;border-radius:50%;background-color:#fff;border:1px solid #E5E8EB;display:flex;justify-content:center;align-items:center;cursor:pointer;box-shadow:0 2px 4px #0000001a;z-index:100;font-size:1.5rem;color:#333;transition:all .2s ease;padding-bottom:4px}.back-button:hover{transform:translateY(-2px);box-shadow:0 4px 8px #00000026}.back-button:active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}:root{--color-primary: #FF2D55;--color-primary-dark: #D61C4E;--color-primary-light: #FF8FA3;--color-background: #F2F4F6;--color-white: #FFFFFF;--color-text: #191F28;--color-text-secondary: #8B95A1;--color-border: #E5E8EB;--notebook-bg: #FFFFFF;--notebook-line: #E5E5E5;--notebook-margin-line: #FF2D55;--spiral-color: #2C2C2C;--spiral-shadow: rgba(0, 0, 0, .2);--radius-lg: 24px;--radius-md: 16px;--radius-sm: 8px}*,*:before,*:after{box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--color-background);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}.toss-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background-color:var(--color-background);padding:20px}.toss-card{background:var(--color-white);padding:40px;border-radius:24px;box-shadow:0 4px 20px #0000000d;width:100%;max-width:400px;animation:slideUp .5s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.toss-title{font-size:24px;font-weight:700;color:var(--color-text);margin-bottom:8px;text-align:center}.toss-subtitle{font-size:15px;color:var(--color-text-secondary);text-align:center;margin-bottom:32px}.toss-form{display:flex;flex-direction:column;gap:20px}.toss-form-group{display:flex;flex-direction:column;gap:8px}.toss-form-group label{font-size:14px;font-weight:600;color:var(--color-text);margin-left:4px}.toss-input{padding:14px 16px;border-radius:12px;border:1px solid transparent;background-color:#f2f4f6;font-size:15px;color:var(--color-text);transition:all .2s ease;width:100%}.toss-input:focus{outline:none;background-color:#fff;border-color:var(--color-primary);box-shadow:0 0 0 3px #ff2d551a}.toss-input::placeholder{color:#b0b8c1}.toss-button{width:100%;margin-top:12px;padding:16px;border-radius:14px;border:none;background-color:var(--color-primary);color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:background-color .2s ease,transform .1s ease}.toss-button:hover{background-color:var(--color-primary-dark)}.toss-button:active{transform:scale(.98)}.toss-button-secondary{background-color:transparent;color:var(--color-text-secondary);margin-top:0}.toss-button-secondary:hover{background-color:#0000000d;color:var(--color-text)}.toss-error-message{color:#ff5252;font-size:13px;text-align:center;background-color:#fff0f0;padding:10px;border-radius:8px}button{font-family:inherit}
