:root{font-family:"Noto Sans JP","Yu Gothic",Meiryo,system-ui,sans-serif;color:#3e2921;background:#fbf2e5;--red:#b92931;--green:#227356;--ink:#3e2921;--muted:#866d5d;--cream:#fffaf1;--shadow:0 16px 54px #55301721}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0;min-height:44px;color:inherit;background:#f3e7d4;border-radius:12px;padding:10px 17px;font-weight:700;transition:transform .15s,background .15s}button:hover{filter:brightness(1.025);transform:translateY(-1px)}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:default;transform:none}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #eea020;outline-offset:3px}input,select,textarea{border:1px solid #d9c7ad;border-radius:10px;padding:12px;background:white;color:var(--ink);width:100%;min-height:46px}textarea{resize:vertical;min-height:88px}label{display:grid;gap:7px;font-weight:650;font-size:.91rem}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(1.7rem,3.3vw,2.8rem);line-height:1.3}h2{font-size:1.4rem}small,.muted{color:var(--muted)}a{color:var(--green)}.primary{background:var(--red);color:white;box-shadow:0 4px 0 #861c22}.green{background:var(--green);color:white}.ghost{background:transparent;box-shadow:none}.small{font-size:.8rem;padding:7px 11px;min-height:36px}.danger{background:#a52228;color:white}.wide{width:100%}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.stack{display:grid;gap:18px}.columns{display:grid;grid-template-columns:1fr 1fr;gap:14px}.tag{display:inline-block;background:#f4e9d7;padding:5px 9px;border-radius:20px;font-size:.75rem}.error{color:#a11d29;background:#fff0ee;padding:12px;border-radius:9px;line-height:1.6}.notice{background:#fff5cf;border:1px solid #ead899;padding:14px;border-radius:12px;font-size:.91rem;line-height:1.7}.loading{padding:25px;text-align:center}.spinner{width:28px;height:28px;border:3px solid #e5d3b7;border-top-color:var(--red);border-radius:100%;animation:spin 1s linear infinite;margin:0 auto 14px}@keyframes spin{to{transform:rotate(360deg)}}.title-page{min-height:100dvh;position:relative;display:flex;align-items:flex-end;justify-content:center;padding:25px;background:#dbeeb2 url('/title.webp') center center/cover no-repeat}.title-page:after{content:'';position:absolute;inset:75% 0 0;background:linear-gradient(transparent,#49211765);pointer-events:none}.start{font-size:1.35rem;padding:16px 52px;border:3px solid white;border-radius:40px;position:relative;z-index:1;box-shadow:0 6px 0 #861c22,0 8px 25px #50200f55}.teacher-link{position:absolute;top:16px;right:18px;color:#432b20;background:#fffcf1ed;border:1px solid #e6d8c1;z-index:2;font-size:.8rem}.brand-tag{position:absolute;top:18px;left:18px;color:white;text-shadow:0 1px 5px #372116;font-size:.75rem;letter-spacing:.12em}dialog{border:0;border-radius:24px;padding:0;background:var(--cream);box-shadow:var(--shadow);max-height:92dvh;width:min(660px,94vw);color:var(--ink)}dialog::backdrop{background:#302215a6;backdrop-filter:blur(5px)}.modal-head{padding:23px 25px 8px;display:flex;align-items:center;justify-content:space-between;gap:16px}.modal-head h2{margin:0;font-size:1.3rem}.modal-body{padding:16px 25px 26px;overflow:auto}.close{border-radius:50%;width:38px;min-height:38px;padding:4px;background:#eee1ca;font-size:1.3rem}.login-tabs{display:flex;padding:5px;background:#efe1cc;border-radius:12px;margin-bottom:22px;gap:5px}.login-tabs button{flex:1;font-size:.85rem}.login-tabs .active{background:white;box-shadow:0 2px 8px #42250c12}.hint{font-size:.82rem;line-height:1.8;color:var(--muted)}#toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,15px);padding:13px 24px;border-radius:30px;background:#2c624b;color:white;box-shadow:var(--shadow);z-index:100;opacity:0;pointer-events:none;transition:.2s;font-weight:700;max-width:90vw;text-align:center}#toast.show{opacity:1;transform:translate(-50%,0)}.plaza{min-height:100dvh;background:#e4f1ed url('/plaza.webp') center/cover fixed;display:flex;align-items:center;justify-content:center;padding:55px 20px}.wizard{width:min(950px,100%);padding:30px 40px;background:#fffaf3ed;backdrop-filter:blur(10px);border:2px solid white;border-radius:28px;box-shadow:var(--shadow);text-align:center}.eyebrow{letter-spacing:.16em;text-transform:uppercase;color:#9a6b32;font-weight:800;font-size:.72rem;margin-bottom:13px}.types{display:grid;grid-template-columns:repeat(5,1fr);gap:11px;margin:24px 0}.type{background:white;border:2px solid #efdfc9;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;font-size:.78rem;min-height:98px}.type span{font-size:2.2rem}.type.chosen{border-color:var(--red);background:#fff0e7;box-shadow:0 0 0 2px #b9293111}.name-form{max-width:480px;margin:26px auto;display:grid;gap:18px;text-align:left}.name-form input{font-size:1.25rem;padding:16px}.appbar{height:58px;background:#fffaf3f5;border-bottom:1px solid #e2d2bb;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 18px;position:sticky;top:0;z-index:10}.wordmark{font-family:Georgia,serif;font-weight:800;font-size:1.15rem;color:var(--red);white-space:nowrap}.wordmark small{font:500 .7rem system-ui;color:var(--muted);margin-left:10px}.mode-tabs{display:flex;gap:6px}.mode-tabs button{min-height:39px;font-size:.85rem;padding:8px 13px;box-shadow:none}.mode-tabs .active{background:var(--red);color:white}.mode-tabs button.locked{background:#e9e4dd;color:#9c8e82}.top-actions{display:flex;gap:5px;align-items:center}.save-status{font-size:.68rem;color:var(--green)}.menu-wrap{padding:16px;max-width:1600px;margin:auto}.menu{--accent:#912631;--paper:#fffaf0;position:relative;border:2px solid var(--accent);border-radius:8px;background:var(--paper);background-size:cover;background-position:center;box-shadow:var(--shadow);overflow:hidden;padding:22px 32px 24px;min-height:calc(100dvh - 90px)}.menu:before{content:'';position:absolute;inset:8px;border:1px solid var(--accent);border-radius:3px;opacity:.45;pointer-events:none}.menu-header{position:relative;text-align:center;margin:0 0 16px}.menu-header h1{font-family:Georgia,"Yu Mincho",serif;font-size:clamp(2rem,4.2vw,4rem);color:var(--accent);margin:0 0 3px;line-height:1.2;overflow-wrap:anywhere}.menu-header .restaurant-type{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;background:var(--paper);border-radius:10px;padding:4px 14px;display:inline-block}.menu-header .edit-name{position:absolute;right:0;top:0;opacity:.7}.menu-section{position:relative;margin-bottom:13px}.section-title{display:flex;align-items:center;gap:12px;color:var(--accent);font:700 1.05rem Georgia,serif;letter-spacing:.1em;text-transform:uppercase;margin:8px 0 7px}.section-title:before,.section-title:after{content:'';flex:1;height:1px;background:var(--accent);opacity:.35}.items-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.lower-menu{display:grid;grid-template-columns:1fr 1fr;gap:18px}.lower-menu .items-grid{grid-template-columns:1fr 1fr}.item{position:relative;padding:8px 13px 12px;border:1px solid #d5b89666;border-radius:8px;background:color-mix(in srgb,var(--paper) 93%,transparent);display:flex;flex-direction:column;align-items:center;text-align:center;width:100%;min-width:0;color:#3b2d26;box-shadow:none;min-height:205px}.item img{width:100%;height:clamp(85px,13.5dvh,155px);object-fit:contain;margin-bottom:6px}.food-name{font:700 clamp(.9rem,1.5vw,1.18rem) Georgia,serif;line-height:1.2;margin:0 0 5px;overflow-wrap:anywhere}.food-desc{font-size:clamp(.7rem,.95vw,.84rem);font-weight:400;line-height:1.4;min-height:2.8em;max-width:240px}.food-price{font:800 1.15rem Georgia,serif;color:var(--accent);margin-top:7px}.empty .plus{width:54px;height:54px;border:1px dashed #bcac94;border-radius:50%;display:grid;place-items:center;font-size:2rem;font-weight:300;color:#ad8869;margin:20px 0 12px}.empty{justify-content:center;color:#a68c75}.empty small{font-size:.76rem;font-weight:400}.theme-1{--accent:#23546c;--paper:#f3fbff;border-radius:20px}.theme-1 .menu-header h1{font-family:system-ui;font-weight:850}.theme-1 .item{border-radius:18px}.theme-2{--accent:#df5628;--paper:#fff7e7;border-width:4px}.theme-2 .menu-header h1{font-family:system-ui;font-weight:900;letter-spacing:-.04em}.theme-2 .item{border:0;border-bottom:3px solid #df562866}.theme-3{--accent:#376343;--paper:#f5f6ec}.theme-3 .menu-header h1{font-style:italic}.menu-tools{display:flex;justify-content:center;gap:12px;margin:12px;align-items:center}.menu-footer{font-size:.68rem;text-align:center;color:var(--accent);letter-spacing:.16em;margin-top:16px}.designs{display:grid;grid-template-columns:1fr 1fr;gap:18px}.design-option{padding:8px;background:#fff;border:3px solid transparent;border-radius:14px;overflow:hidden}.design-option.selected{border-color:var(--red)}.design-mini{aspect-ratio:1.5;position:relative;overflow:hidden;display:grid;place-items:center;background-size:cover;background-position:center}.design-mini .mini-paper{width:82%;height:82%;background:#fffaf0dd;padding:13px;border:1px solid currentColor;display:flex;flex-direction:column;justify-content:center}.mini-name{font:800 clamp(.9rem,2vw,1.7rem) Georgia,serif;margin-bottom:7px}.mini-lines{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.mini-lines i{background:currentColor;opacity:.16;aspect-ratio:1;border-radius:50%}.option-label{display:block;font-size:.8rem;padding:10px 0 3px}.choices{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.choice{border:2px solid #e9dbc4;background:white;padding:5px;display:flex;flex-direction:column;gap:5px}.choice.selected{border-color:var(--green);background:#f0faf3}.choice img{width:100%;aspect-ratio:1;object-fit:contain}.choice small{font-size:.67rem}.editor-price{font-size:1.35rem;font-weight:800}.editor-preview{max-height:130px;max-width:100%;object-fit:contain;display:block;margin:auto}.generation-note{font-size:.76rem;color:var(--muted);line-height:1.7}.qr-panel{text-align:center}.qr-panel img{height:110px;max-width:100%;object-fit:contain}.qr-panel canvas{display:block;margin:14px auto;max-width:100%;border:12px solid white;border-radius:15px}.qr-price{font:800 2.3rem Georgia,serif;color:var(--red);margin:12px}.code-number{letter-spacing:.2em;font-size:1.5rem;background:white;border-radius:10px;padding:10px;font-weight:800}.quantity{display:flex;align-items:center;justify-content:center;gap:18px;margin:15px}.quantity strong{font-size:1.6rem;min-width:35px}.wallet-page{max-width:1250px;margin:auto;padding:25px}.wallet-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.wallet-header h1{margin:0;font:800 2rem Georgia,serif}.wallet-balance{font-size:2.6rem;font-weight:850;color:var(--green)}.wallet-layout{display:grid;grid-template-columns:350px 1fr;gap:25px;align-items:start}.panel{background:#fffaf3;border:1px solid #e4d5bf;border-radius:20px;padding:22px;box-shadow:0 7px 24px #5530170a}.scan-box{position:relative;aspect-ratio:1;background:#2a4139;border-radius:15px;overflow:hidden;margin-bottom:16px;display:flex;align-items:center;justify-content:center;color:#fff;text-align:center}.scan-box:after{content:'';position:absolute;inset:18%;border:3px solid #f4e4a2;border-radius:12px;pointer-events:none}.scan-box video{width:100%;height:100%;object-fit:cover}.scan-hint{padding:0 24%;font-size:.8rem;line-height:1.7}.code-entry{display:flex;gap:8px;margin-top:10px}.code-entry input{min-width:0;letter-spacing:.12em}.food-collection{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.food-card{background:#fffaf1;border:1px solid #e1cdb4;border-radius:16px;padding:15px;text-align:center;box-shadow:0 5px 13px #5530170a;animation:cardin .3s}.food-card img{width:100%;height:120px;object-fit:contain;margin-bottom:10px}.food-card strong{display:block;font:700 1rem Georgia,serif;margin-bottom:6px}.food-card small{display:block;line-height:1.6;font-size:.72rem}.food-card .paid{display:inline-block;background:#edf3e9;color:#367050;border-radius:10px;padding:5px 10px;font-size:.8rem;margin-top:9px}.empty-collection{padding:65px 20px;text-align:center;color:var(--muted);border:2px dashed #dfceb6;border-radius:18px;grid-column:1/-1}.empty-collection span{font-size:3rem;display:block;margin-bottom:15px}@keyframes cardin{from{transform:translateY(15px);opacity:0}to{transform:none;opacity:1}}.receipt{background:white;border-radius:16px;padding:22px;border:1px dashed #c1ae91;text-align:center}.receipt img{width:180px;height:150px;object-fit:contain}.receipt dl{display:grid;grid-template-columns:1fr 1fr;gap:10px;text-align:left}.receipt dd{text-align:right;margin:0}.teacher-page{padding:25px;max-width:1500px;margin:auto}.teacher-heading{margin-bottom:23px}.teacher-heading h1{margin:0 0 4px}.class-select{display:flex;gap:10px}.class-select select{min-width:100px}.teacher-controls{display:grid;grid-template-columns:1.2fr 1fr;gap:20px;margin-bottom:22px}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid #efdfc7;font-size:.88rem}.switch-row input{appearance:none;width:48px;height:28px;min-height:28px;border-radius:20px;background:#c6beb3;position:relative;padding:0;border:0;cursor:pointer;flex-shrink:0}.switch-row input:after{content:'';position:absolute;width:20px;height:20px;left:4px;top:4px;background:white;border-radius:50%;transition:.2s}.switch-row input:checked{background:var(--green)}.switch-row input:checked:after{left:24px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:22px}.stat{border:1px solid #e0d2be;background:white;border-radius:15px;padding:18px}.stat span{font-size:.75rem;color:var(--muted)}.stat strong{display:block;font-size:1.7rem;margin-top:6px}.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.restaurant-card{background:#fffdf8;border:1px solid #e4d4bc;border-radius:18px;overflow:hidden}.restaurant-card .design-mini{aspect-ratio:1.6}.restaurant-card .card-info{padding:15px}.restaurant-card h3{font:700 1.2rem Georgia,serif;margin:10px 0}.restaurant-card .card-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:13px}.restaurant-card .card-actions button{font-size:.72rem;min-height:32px;padding:6px 9px}.teacher-rank{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:22px}table{border-collapse:collapse;width:100%;font-size:.85rem}td,th{padding:12px 9px;border-bottom:1px solid #eadbc8;text-align:left}th{font-size:.73rem;color:var(--muted)}.rank-number{font-weight:800;color:#b28938}.locked-page{text-align:center;padding:80px 20px;max-width:550px;margin:auto}.locked-page .icon{font-size:3rem;margin-bottom:20px}.mobile-brand{display:none}.teacher-open-banner{background:#fbf0bf;text-align:center;padding:9px;font-size:.8rem}.role-label{background:#e8f0df;color:#40633a;border-radius:20px;padding:6px 11px;font-size:.75rem}.phrase-list{display:grid;gap:10px}.phrase{background:white;border-radius:10px;padding:13px}.phrase strong{display:block;font-family:Georgia,serif;font-size:1.1rem}.phrase small{font-size:.75rem}.history{margin-top:20px}.history summary{cursor:pointer;font-size:.85rem;padding:10px}.loader-page{min-height:100dvh;display:grid;place-items:center}
@media(min-width:1700px){.menu{padding:28px 50px}.item img{height:17dvh}.item{min-height:265px}}@media(max-width:1000px){.wordmark small{display:none}.gallery{grid-template-columns:repeat(3,1fr)}.food-collection{grid-template-columns:repeat(2,1fr)}.wallet-layout{grid-template-columns:300px 1fr}.menu{padding:20px}.items-grid{gap:10px}.type{font-size:.7rem}.teacher-controls{grid-template-columns:1fr 1fr}}@media(max-width:720px){.title-page{background-size:contain;background-position:center 15%;background-color:#a8dbc2;padding-bottom:12vh}.title-page:after{inset:60% 0 0}.start{font-size:1.1rem}.wizard{padding:25px 17px}.types{grid-template-columns:repeat(3,1fr);gap:8px}.type{min-height:85px}.type span{font-size:1.8rem}.appbar{height:auto;min-height:60px;padding:8px;gap:6px;flex-wrap:wrap}.wordmark{font-size:.9rem}.mode-tabs{order:3;width:100%;justify-content:center;border-top:1px solid #e5d6c1;padding-top:6px}.mode-tabs button{flex:1;font-size:.76rem;padding:7px}.menu-wrap{padding:8px}.menu{padding:21px 15px;min-height:calc(100dvh - 130px)}.menu-header{margin-bottom:22px}.menu-header .edit-name{position:static;margin-top:5px}.menu-header h1{font-size:2.1rem}.items-grid{grid-template-columns:1fr 1fr;gap:12px}.lower-menu{grid-template-columns:1fr;gap:2px}.item{min-height:225px}.item img{height:130px}.food-name{font-size:1.1rem}.food-desc{font-size:.78rem}.food-price{font-size:1.2rem}.wallet-page{padding:18px 12px}.wallet-header{align-items:flex-end}.wallet-header h1{font-size:1.6rem}.wallet-balance{font-size:2rem}.wallet-layout{grid-template-columns:1fr}.scan-box{aspect-ratio:1.4;max-height:300px}.food-collection{grid-template-columns:repeat(2,1fr)}.wallet-header .role-label{display:none}.teacher-page{padding:20px 12px}.teacher-controls,.teacher-rank{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}.gallery{grid-template-columns:1fr 1fr;gap:10px}.class-select{width:100%;margin-top:12px}.teacher-heading{align-items:flex-start}.teacher-heading h1{font-size:1.8rem}.choices{gap:6px}.choice small{font-size:.56rem}.modal-body{padding:14px 18px 22px}.modal-head{padding:20px 18px 9px}.designs{gap:10px}.mini-name{font-size:.8rem}.mini-lines{gap:3px}.design-mini .mini-paper{padding:6px}.menu-tools{flex-wrap:wrap;margin:10px 0}.panel{padding:17px}.restaurant-card .card-info{padding:11px}.restaurant-card h3{font-size:1rem}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
