:root{--blue: #1d4ed8;--blue-l: #3b82f6;--blue-bg: #eff6ff;--red: #dc2626;--red-bg: #fef2f2;--green: #16a34a;--green-bg: #f0fdf4;--teal: #0f766e;--teal-bg: #f0fdfa;--gray: #6b7280;--gray-l: #e5e7eb;--gray-bg: #f9fafb;--dark: #111827;--white: #ffffff;--radius: 10px;--shadow: 0 1px 3px rgba(0,0,0,.1);--font: system-ui, -apple-system, sans-serif;--tab-h: 60px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;overscroll-behavior:none}body{font-family:var(--font);background:var(--gray-bg);color:var(--dark);min-height:100dvh;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer;border:none}input,select,textarea{font-family:inherit}input,select,textarea{font-size:max(16px,1rem)}@media (min-width: 480px){input,select,textarea{font-size:1rem}}.container{max-width:720px;margin:0 auto;padding:0 16px}.card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}@media (min-width: 480px){.card{padding:20px}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:12px 20px;border-radius:var(--radius);font-size:.95rem;font-weight:600;transition:opacity .15s,transform .1s;min-height:44px;touch-action:manipulation}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--blue);color:var(--white)}.btn-primary:hover:not(:disabled){background:var(--blue-l)}.btn-teacher{background:var(--teal);color:var(--white)}.btn-teacher:hover:not(:disabled){background:#0d9488}.btn-danger{background:var(--red);color:var(--white)}.btn-ghost{background:transparent;color:var(--gray);border:1px solid var(--gray-l)}.btn-ghost:hover{background:var(--gray-l)}.btn-full{width:100%}.btn-sm{padding:8px 14px;font-size:.82rem;min-height:36px}.badge{display:inline-block;padding:3px 8px;border-radius:99px;font-size:.73rem;font-weight:700}.badge-red{background:var(--red-bg);color:var(--red)}.badge-green{background:var(--green-bg);color:var(--green)}.badge-blue{background:var(--blue-bg);color:var(--blue)}.badge-gray{background:var(--gray-l);color:var(--gray)}.form-group{display:flex;flex-direction:column;gap:5px}.form-group label{font-size:.84rem;font-weight:600;color:var(--gray)}.form-group input,.form-group select,.form-group textarea{padding:11px 14px;border:1.5px solid var(--gray-l);border-radius:var(--radius);background:var(--white);transition:border-color .15s;width:100%}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--blue-l)}.form-row{display:grid;grid-template-columns:1fr;gap:12px}@media (min-width: 480px){.form-row{grid-template-columns:1fr 1fr}}.form-section-label{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--gray);margin-top:4px}.required{color:var(--red)}.error-msg{background:var(--red-bg);color:var(--red);padding:10px 14px;border-radius:var(--radius);font-size:.88rem;line-height:1.4}.success-msg{background:var(--green-bg);color:var(--green);padding:10px 14px;border-radius:var(--radius);font-size:.88rem;line-height:1.4}.navbar{background:var(--blue);color:var(--white);position:sticky;top:0;z-index:100;box-shadow:0 2px 8px #0003}.navbar-inner{display:flex;align-items:center;justify-content:space-between;height:52px;padding:0 16px;max-width:720px;margin:0 auto}.navbar-title{font-size:1rem;font-weight:800}.navbar-user{font-size:.82rem;opacity:.85}.tab-bar{position:fixed;bottom:0;left:0;right:0;z-index:100;background:var(--white);border-top:1px solid var(--gray-l);display:flex;box-shadow:0 -2px 8px #0000000f;padding-bottom:env(safe-area-inset-bottom,0)}.tab-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:7px 4px;gap:3px;font-size:.65rem;font-weight:600;color:var(--gray);background:none;border:none;cursor:pointer;transition:color .15s;min-height:50px;touch-action:manipulation}.tab-item.active{color:var(--blue)}.tab-item-icon{font-size:1.25rem;line-height:1}@media (max-width: 320px){.tab-item{font-size:0}.tab-item-icon{font-size:1.4rem}}@media (min-width: 768px){.tab-bar{position:static;border-top:none;border-bottom:1px solid var(--gray-l);padding-bottom:0;background:var(--white);box-shadow:none}.tab-item{flex-direction:row;gap:6px;font-size:.88rem;padding:14px 20px;min-height:48px}.tab-item-icon{font-size:1rem}}.page-content{padding:12px 16px calc(var(--tab-h) + env(safe-area-inset-bottom,0) + 12px);max-width:720px;margin:0 auto}@media (min-width: 768px){.page-content{padding:20px 24px 32px}}.auth-page{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px 16px;padding-bottom:max(20px,env(safe-area-inset-bottom));background:linear-gradient(135deg,#1d4ed8,#1e40af)}.teacher-page{background:linear-gradient(135deg,#0f766e,#134e4a)}.auth-card{background:var(--white);border-radius:16px;padding:24px 20px;width:100%;max-width:400px;box-shadow:0 8px 32px #0003;display:flex;flex-direction:column;gap:16px}@media (min-width: 480px){.auth-card{padding:32px 28px;gap:18px}}.auth-logo{text-align:center;font-size:2.5rem;line-height:1}.auth-title{text-align:center;font-size:1.25rem;font-weight:800;color:var(--dark)}.auth-subtitle{text-align:center;font-size:.83rem;color:var(--gray);margin-top:-10px}.auth-link{text-align:center;font-size:.85rem;color:var(--gray)}.auth-link a{color:var(--blue);font-weight:600}.auth-form{display:flex;flex-direction:column;gap:12px}.teacher-portal-card{max-width:380px}.teacher-portal-options{display:flex;flex-direction:column;gap:10px}.teacher-option-btn{display:flex;align-items:center;gap:14px;padding:16px;background:var(--gray-bg);border:2px solid var(--gray-l);border-radius:12px;text-align:left;cursor:pointer;transition:border-color .15s,background .15s,transform .1s;touch-action:manipulation}.teacher-option-btn:hover{border-color:var(--teal);background:var(--teal-bg)}.teacher-option-btn:active{transform:scale(.98)}.teacher-option-icon{font-size:1.8rem;flex-shrink:0}.teacher-option-title{font-size:.95rem;font-weight:800;color:var(--dark)}.teacher-option-sub{font-size:.78rem;color:var(--gray);margin-top:2px}.teacher-option-arrow{font-size:1.5rem;color:var(--gray);margin-left:auto;flex-shrink:0}.teacher-link-banner{border-top:1px solid var(--gray-l);padding-top:14px;text-align:center}.teacher-link-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border:1.5px solid var(--teal);border-radius:var(--radius);font-size:.85rem;font-weight:600;color:var(--teal);background:var(--teal-bg);cursor:pointer;transition:background .15s,transform .1s;text-decoration:none;touch-action:manipulation}.teacher-link-btn:hover{background:#ccfbf1}.teacher-link-btn:active{transform:scale(.97)}.login-tagline{text-align:center;font-size:.82rem;color:var(--gray);line-height:1.5;margin:-6px 0 2px;padding:8px 4px;border-radius:8px;background:#f0fdf4;border:1px solid #bbf7d0}.school-combobox{position:relative}.school-combobox input{width:100%;box-sizing:border-box;padding-right:30px}.school-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--gray);font-size:.8rem;cursor:pointer;padding:4px;line-height:1}.school-clear:hover{color:var(--dark)}.school-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--white);border:1.5px solid var(--blue);border-radius:var(--radius);box-shadow:0 6px 20px #0000001f;max-height:220px;overflow-y:auto;z-index:100;margin:0;padding:4px 0;list-style:none}.school-dropdown-item{padding:10px 14px;font-size:.88rem;cursor:pointer;border-radius:4px;transition:background .1s}.school-dropdown-item:hover,.school-dropdown-item.selected{background:#e0f2fe}.school-dropdown-empty{padding:10px 14px;font-size:.85rem;color:var(--gray);font-style:italic}.tuto-download{border-top:1px solid var(--gray-l);padding-top:10px;display:flex;flex-direction:column;align-items:center;gap:7px}.tuto-download-label{font-size:.72rem;color:var(--gray);letter-spacing:.03em;text-transform:uppercase;font-weight:600}.tuto-download-links{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}.tuto-dl-btn{display:inline-flex;align-items:center;gap:4px;padding:5px 10px;border-radius:20px;border:1px solid var(--gray-l);background:#f8fafc;color:var(--dark);font-size:.75rem;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s;touch-action:manipulation}.tuto-dl-btn:hover{background:#e0f2fe;border-color:#7dd3fc}.tuto-dl-btn:active{transform:scale(.96)}.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.dash-card{background:var(--white);border-radius:var(--radius);padding:16px 12px;text-align:center;cursor:pointer;box-shadow:var(--shadow);border:2px solid transparent;transition:border-color .15s,transform .1s;display:flex;flex-direction:column;align-items:center;gap:6px;touch-action:manipulation}.dash-card:hover{transform:translateY(-2px)}.dash-card:active{transform:scale(.98)}.dash-card.red{border-color:var(--red);background:var(--red-bg)}.dash-card.green{border-color:var(--green);background:var(--green-bg)}.dash-card.blue{border-color:var(--blue);background:var(--blue-bg)}.dash-card-icon{font-size:1.8rem}.dash-card-label{font-size:.78rem;font-weight:700;color:var(--dark);line-height:1.3}.dash-card-count{font-size:1.8rem;font-weight:800}.dash-card.red .dash-card-count{color:var(--red)}.dash-card.green .dash-card-count{color:var(--green)}.dash-card.blue .dash-card-count{color:var(--blue)}@media (min-width: 480px){.dash-card-icon{font-size:2.2rem}.dash-card-count{font-size:2rem}.dash-card-label{font-size:.85rem}}.page-header{padding:10px 0 8px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.page-title{font-size:1.1rem;font-weight:800}.page-subtitle{font-size:.8rem;color:var(--gray);margin-top:2px}@media (min-width: 480px){.page-title{font-size:1.25rem}}.country-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}@media (min-width: 380px){.country-grid{grid-template-columns:repeat(4,1fr)}}@media (min-width: 540px){.country-grid{grid-template-columns:repeat(5,1fr)}}@media (min-width: 700px){.country-grid{grid-template-columns:repeat(6,1fr)}}.country-card{background:var(--white);border-radius:var(--radius);padding:10px 6px;text-align:center;cursor:pointer;box-shadow:var(--shadow);border:2px solid transparent;transition:border-color .15s,transform .1s;display:flex;flex-direction:column;align-items:center;gap:3px;min-height:68px;justify-content:center;touch-action:manipulation}.country-card:hover{transform:translateY(-2px);border-color:var(--blue-l)}.country-card:active{transform:scale(.96)}.country-card.has-stickers-red{border-color:#fca5a5}.country-card.has-stickers-green{border-color:#86efac}.country-code{font-size:.85rem;font-weight:800;color:var(--dark)}.country-name{font-size:.58rem;color:var(--gray);line-height:1.2}.country-count{font-size:.65rem;font-weight:700}.country-count.red{color:var(--red)}.country-count.green{color:var(--green)}.sticker-view-header{display:flex;align-items:center;gap:10px;padding:8px 0;position:sticky;top:52px;background:var(--gray-bg);z-index:10}@media (min-width: 768px){.sticker-view-header{top:100px}}.back-btn{background:var(--gray-l);color:var(--dark);border-radius:8px;padding:9px 14px;font-weight:700;font-size:.88rem;border:none;cursor:pointer;white-space:nowrap;touch-action:manipulation;min-height:40px}.sticker-view-title{font-size:.95rem;font-weight:800}.sticker-view-subtitle{font-size:.76rem;color:var(--gray)}.sticker-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}@media (min-width: 360px){.sticker-grid{grid-template-columns:repeat(6,1fr)}}@media (min-width: 480px){.sticker-grid{grid-template-columns:repeat(7,1fr)}}@media (min-width: 600px){.sticker-grid{grid-template-columns:repeat(9,1fr)}}@media (min-width: 720px){.sticker-grid{grid-template-columns:repeat(10,1fr)}}.sticker-btn{aspect-ratio:1;border-radius:7px;font-size:clamp(.6rem,2.2vw,.75rem);font-weight:800;display:flex;align-items:center;justify-content:center;border:2px solid transparent;transition:background .1s,border-color .1s,transform .1s;cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--gray-l);color:var(--gray);touch-action:manipulation;min-height:44px}.sticker-btn:active{transform:scale(.88)}.sticker-btn.selected-red{background:var(--red-bg);border-color:var(--red);color:var(--red)}.sticker-btn.selected-green{background:var(--green-bg);border-color:var(--green);color:var(--green)}.save-indicator{font-size:.78rem;color:var(--gray);min-height:20px;display:flex;align-items:center;gap:4px}.save-indicator.saving{color:var(--blue)}.save-indicator.saved{color:var(--green);font-weight:700}.match-card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin-bottom:10px}.match-header{display:flex;align-items:center;justify-content:space-between;padding:13px 14px;background:var(--blue-bg);cursor:pointer;gap:8px;touch-action:manipulation}.match-header:active{opacity:.8}.match-name{font-weight:800;font-size:.95rem}.match-class{font-size:.76rem;color:var(--gray)}.match-counts{display:flex;gap:5px;align-items:center;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.match-body{padding:12px 14px;display:flex;flex-direction:column;gap:10px}.match-section-title{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--gray);margin-bottom:5px}.sticker-tags{display:flex;flex-wrap:wrap;gap:4px}.sticker-tag{padding:3px 7px;border-radius:5px;font-size:.7rem;font-weight:700}.sticker-tag.red{background:var(--red-bg);color:var(--red)}.sticker-tag.green{background:var(--green-bg);color:var(--green)}.no-match{text-align:center;padding:40px 16px;color:var(--gray);font-size:.92rem;line-height:1.6}.admin-layout{min-height:100dvh;background:var(--gray-bg)}.admin-topbar{background:var(--dark);color:var(--white);padding:0 16px;height:50px;display:flex;align-items:center;justify-content:space-between;gap:12px}.admin-topbar-title{font-weight:800;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-nav{background:var(--white);border-bottom:1px solid var(--gray-l);padding:0 4px;display:flex;gap:0;overflow-x:auto;scrollbar-width:none}.admin-nav::-webkit-scrollbar{display:none}.admin-nav-item{padding:12px 14px;font-size:.84rem;font-weight:600;color:var(--gray);background:none;border:none;cursor:pointer;border-bottom:3px solid transparent;white-space:nowrap;touch-action:manipulation}.admin-nav-item.active{color:var(--blue);border-color:var(--blue)}.admin-content{padding:14px 12px;max-width:960px;margin:0 auto}@media (min-width: 600px){.admin-content{padding:20px}}.admin-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-table{width:100%;border-collapse:collapse;font-size:.84rem;min-width:480px}.admin-table th{text-align:left;padding:9px 12px;background:var(--gray-bg);color:var(--gray);font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--gray-l);white-space:nowrap}.admin-table td{padding:10px 12px;border-bottom:1px solid var(--gray-l);vertical-align:middle}.admin-table tr:last-child td{border-bottom:none}.admin-table tr:hover td{background:var(--gray-bg)}.admin-actions{display:flex;gap:6px;flex-wrap:wrap}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#00000073;display:flex;align-items:flex-end;justify-content:center;padding:0}@media (min-width: 480px){.modal-overlay{align-items:center;padding:16px}}.modal{background:var(--white);border-radius:16px 16px 0 0;padding:20px 16px;padding-bottom:max(20px,env(safe-area-inset-bottom));width:100%;display:flex;flex-direction:column;gap:14px;max-height:92dvh;overflow-y:auto;animation:slideUp .2s ease}@media (min-width: 480px){.modal{border-radius:14px;max-width:460px;padding:24px 20px;animation:fadeIn .15s ease}}@keyframes slideUp{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fadeIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.modal:before{content:"";display:block;width:36px;height:4px;background:var(--gray-l);border-radius:2px;margin:-8px auto 4px}@media (min-width: 480px){.modal:before{display:none}}.modal-title{font-size:1.05rem;font-weight:800}.loader{display:flex;align-items:center;justify-content:center;min-height:180px}.spinner{width:34px;height:34px;border:4px solid var(--gray-l);border-top-color:var(--blue);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
