html{-webkit-text-size-adjust:100%;font-size:clamp(15px,13.7px + .34vw,18px)}@media (width<=359px){html{font-size:14px}}:root{--brand-dark:#7a3300;--brand-bar:#fff;--brand-line:#f18d00;--primary:#f18d00;--on-primary:#3b1d00;--primary-soft:#fff1dc;--link:#b84f06;--bg:#fffaf2;--card:#fff;--text:#1f2937;--muted:#6b7280;--line:#eadfd2;--ok:#16a34a;--warn:#d97706;--bad:#dc2626}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:-apple-system,Noto Sans KR,Malgun Gothic,sans-serif;font-size:1rem}.wrap{max-width:960px;margin:0 auto;padding:16px}.narrow{max-width:420px;margin:40px auto;padding:0 16px}.card{background:var(--card);border-radius:12px;margin-bottom:12px;padding:16px;box-shadow:0 1px 3px #0000000f}h1{margin:0 0 12px;font-size:1.333rem}h2{margin:0 0 10px;font-size:1.067rem}input,select{border:1px solid var(--line);border-radius:8px;width:100%;margin:6px 0 12px;padding:12px;font-size:max(16px,1rem)}button,.btn{background:var(--primary);color:var(--on-primary);cursor:pointer;text-align:center;border:0;border-radius:8px;padding:12px 16px;font-size:1.067rem;font-weight:600;text-decoration:none;display:inline-block}button.block,.btn.block{width:100%;display:block}button.ghost{background:var(--primary-soft);color:var(--brand-dark)}button:disabled{opacity:.5;cursor:default}.err{color:var(--bad);margin:8px 0}.muted{color:var(--muted);font-size:.9333rem}header.top{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.tabs{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px;display:grid}.tabs button{color:var(--text);border:1px solid var(--line);white-space:nowrap;background:#fff;padding:12px 4px}.tabs button.on{background:var(--primary);color:var(--on-primary);border-color:var(--primary);font-weight:700}.cal-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.cal{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.cal .dow{text-align:center;color:var(--muted);padding:4px 0;font-size:.8rem}.cal .cell{border:1px solid var(--line);background:#fff;border-radius:8px;min-height:78px;padding:4px;font-size:.7333rem;overflow:hidden}.cal .cell.sel{outline:2px solid var(--primary)}.cal .cell.empty{background:0 0;border:0}.cal .cell .d{font-size:.8rem;font-weight:600}.tag{white-space:nowrap;text-overflow:ellipsis;border-radius:4px;margin-top:2px;padding:1px 4px;display:block;overflow:hidden}.tag.present{color:#166534;background:#dcfce7}.tag.absent{color:#991b1b;background:#fee2e2}.tag.late{color:#92400e;background:#fef3c7}.tag.excused{color:#3730a3;background:#e0e7ff}.tag.hw{color:#854d0e;background:#fef9c3}.tag.hw.done{color:#6b7280;background:#e5e7eb;text-decoration:line-through}.tag.sch{color:#7a3300;background:#ffe3c4}.row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:10px 0;display:flex}.row:last-child{border-bottom:0}.badge{background:#e5e7eb;border-radius:999px;padding:2px 8px;font-size:.8rem}.badge.paid{color:#166534;background:#dcfce7}.badge.pending,.badge.refunded,.badge.partial_refunded{color:#991b1b;background:#fee2e2}@media (width<=600px){.tabs{gap:6px}.tabs button{font-size:.8667rem}.cal .cell{min-height:56px;font-size:.6667rem}.tag{font-size:.6rem}.wrap{padding:10px}}.brandbar{background:var(--brand-bar);border-bottom:3px solid var(--brand-line)}.brandbar .in{justify-content:space-between;align-items:center;gap:12px;max-width:960px;margin:0 auto;padding:10px 16px;display:flex}.brandbar img{height:48px;margin:2px 10px 2px 0;display:block}.brandbar .wm,.brandbar .name{color:var(--brand-dark);letter-spacing:-.5px;font-size:1.2rem;font-weight:800}@media (width<=600px){.brandbar .name{font-size:1rem}.brandbar img{height:40px}}.brandbar button{background:var(--primary-soft);color:var(--brand-dark);padding:8px 12px;font-size:.9333rem}.brandbar.center .in{justify-content:center}a{color:var(--link)}.sub-title{color:var(--muted);margin:-6px 0 14px;font-size:.9333rem}.cal .dow.sun{color:#dc2626}.cal .dow.satd{color:#1d4ed8}.cal .cell.sat{background:#e8f0ff}.cal .cell.sat .d{color:#1d4ed8}.cal .cell.off{background:#ffecec}.cal .cell.off .d{color:#dc2626}.cal .hol{color:#dc2626;font-size:.6rem;line-height:1.2;display:block}.tag.cls{color:#7a3300;white-space:normal;text-align:center;background:#ffe3c4;padding:2px 1px;font-weight:700;line-height:1.2;overflow:visible}.brandbar .name,.brandbar button{white-space:nowrap}@media (width<=600px){.brandbar .in{gap:6px;padding:8px 10px}.brandbar img{height:34px;margin-right:6px}.brandbar .name{font-size:.9333rem}.brandbar button{padding:7px 9px;font-size:.8667rem}}@media (width<=380px){.brandbar .name{display:none}}.cal .cell.out{background:#fdfaf6}.cal .cell.out .d,.cal .cell.out .hol{opacity:.6}.cal .cell.out.sat{background:#f3f7ff}.cal .cell.out.off{background:#fff6f6}.cal .cell.out .d{font-weight:700}.tag.mk{color:#14532d;text-align:center;background:#d9f2e3;font-weight:700}.tag.cls.cur{color:#5a2400;background:#ffc680;border:1px solid #f18d00;font-weight:800}.tag.cls.prev{color:#4c1d95;opacity:.55;background:#e6dcff;border:1px solid #c4b5fd;font-weight:600}.tag.cls.next{color:#831843;opacity:.55;background:#ffd9ea;border:1px solid #f9a8d4;font-weight:600}.legend{color:var(--muted);flex-wrap:wrap;gap:10px;margin:6px 0;font-size:.75rem;display:flex}.legend i{vertical-align:-2px;border:1px solid;border-radius:3px;width:12px;height:12px;margin-right:3px;display:inline-block}body{background:linear-gradient(#fff3e0 0,#fffaf2 220px) fixed}.card{border:1px solid #f6e8d6;border-radius:16px;box-shadow:0 2px 10px #7a330012}.card h2{color:var(--brand-dark)}.hero{color:#fff;background:linear-gradient(135deg,#f18d00 0,#ffae3d 100%);border-radius:18px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:18px;display:flex;box-shadow:0 6px 16px #f18d0047}.hero-name{letter-spacing:-.5px;color:#3b1d00;font-size:1.4rem;font-weight:800}.hero-name small{opacity:.8;font-size:.9rem;font-weight:600}.hero-sub{color:#5a2c00;margin-top:2px;font-size:.9333rem;font-weight:600}.hero select{width:auto;max-width:46%;color:var(--brand-dark);background:#ffffffd9;border:0;margin:0;padding:8px 10px;font-weight:700}.alert{text-align:left;color:#991b1b;background:#fff0f0;border:1px solid #fecaca;border-radius:14px;justify-content:space-between;align-items:center;gap:8px;width:100%;margin-bottom:12px;padding:12px 14px;font-size:1rem;font-weight:500;display:flex}.alert span{white-space:nowrap;font-size:.85rem}.tabs{z-index:5;background:#fff;border:1px solid #f1e2cf;border-radius:16px;grid-template-columns:repeat(3,1fr);gap:6px;padding:5px;position:sticky;top:0;box-shadow:0 1px 4px #0000000a}.tabs button{color:#7c6a58;background:0 0;border:0;border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;font-size:.95rem;line-height:1.15;display:flex;position:relative}.tabs button .ic{font-size:1.15rem}.tabs button.on{background:var(--primary);color:var(--on-primary);box-shadow:0 2px 6px #f18d0059}.tabs .dot{background:#ef4444;border-radius:50%;width:9px;height:9px;position:absolute;top:7px;right:22%}@media (width>=700px){.tabs button{flex-direction:row;justify-content:center;gap:8px}}@media (width<=600px){.tabs button{font-size:.8667rem}}.fee{border:1px solid var(--line);background:#fff;border-radius:14px;gap:4px;margin:0 0 10px;padding:14px;display:grid}.fee.pending{background:snow;border-color:#fecaca}.fee-main{justify-content:space-between;align-items:center;gap:8px;display:flex}.fee-amt{color:var(--text);font-size:1.25rem;font-weight:800}.fee .btn{margin-top:8px}.fee .over,.over{color:#dc2626;font-weight:700}.sum{border-radius:10px;margin-bottom:12px;padding:10px 12px;font-weight:700}.sum.bad{color:#991b1b;background:#fee2e2}.badge{padding:3px 10px;font-weight:700}.badge.pending{color:#fff;background:#dc2626}.badge.wait{color:#92400e;background:#fef3c7}.ok{color:#166534;background:#dcfce7;border-radius:10px;margin:8px 0;padding:10px 12px;font-size:.9333rem}.req-form{align-items:center;gap:8px;display:flex}.req-form select{flex:1;margin:0}.req-form button{white-space:nowrap}.cal-head h2{font-size:1.2rem}.cal .cell{border-radius:10px}button,.btn{white-space:nowrap}.alert{white-space:normal}
