:root{--ewu-primary:#1e3d59;--ewu-secondary:#17a2b8;--ewu-accent:#28a745;--ewu-gold:#ffc107;--ewu-light:#f8f9fa;--ewu-dark:#343a40;--ewu-gradient:linear-gradient(135deg,#1e3d59,#17a2b8);--font-primary:"Inter","Segoe UI",Tahoma,Geneva,Verdana,sans-serif;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-bold:700;--spacing-xs:0.5rem;--spacing-sm:1rem;--spacing-md:1.5rem;--spacing-lg:2rem;--spacing-xl:3rem;--border-radius:12px;--border-radius-lg:16px;--shadow-sm:0 2px 4px #0000001a;--shadow-md:0 4px 12px #00000026;--shadow-lg:0 8px 24px #0003}*{box-sizing:border-box;margin:0;padding:0}body{background:linear-gradient(135deg,#f5f7fa,#c3cfe2);color:#343a40;color:var(--ewu-dark);font-family:Inter,Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-family:var(--font-primary);line-height:1.6;min-height:100vh}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInFromTop{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.App{animation:fadeInUp .8s ease-out;margin:0 auto;max-width:1200px;min-height:100vh;overflow-x:hidden;padding:1.5rem;padding:var(--spacing-md);text-align:center}.App-header{animation:slideInFromTop .6s ease-out .2s both;background:linear-gradient(135deg,#1e3d59,#17a2b8);background:var(--ewu-gradient);border-radius:16px;border-radius:var(--border-radius-lg);box-shadow:0 8px 24px #0003;box-shadow:var(--shadow-lg);margin-bottom:3rem;margin-bottom:var(--spacing-xl);overflow:hidden;padding:3rem 2rem;padding:var(--spacing-xl) var(--spacing-lg);position:relative}.App-header:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z' fill='%23fff' fill-opacity='.1' fill-rule='evenodd'/%3E%3C/svg%3E") repeat;bottom:0;content:"";left:0;opacity:.1;position:absolute;right:0;top:0}.App-header h1{color:#fff;font-size:clamp(2rem,4vw,3.5rem);font-weight:700;font-weight:var(--font-weight-bold);letter-spacing:-.02em;margin-bottom:1rem;margin-bottom:var(--spacing-sm);position:relative;text-shadow:0 2px 4px #0000004d}.App-header p{color:#ffffffe6;font-size:clamp(1rem,2vw,1.2rem);font-weight:400;font-weight:var(--font-weight-normal);margin:0 auto;max-width:800px;position:relative}.App-main{display:flex;flex:1 1;flex-direction:column;gap:20px;justify-content:flex-start;min-height:60vh}.file-upload{animation:scaleIn .6s ease-out .4s both;background:#fff;border:2px solid #0000;border-radius:16px;border-radius:var(--border-radius-lg);box-shadow:0 4px 12px #00000026;box-shadow:var(--shadow-md);margin-bottom:3rem;margin-bottom:var(--spacing-xl);padding:3rem;padding:var(--spacing-xl);position:relative;transition:all .3s ease}.file-upload:hover{box-shadow:0 8px 24px #0003;box-shadow:var(--shadow-lg);transform:translateY(-2px)}.upload-section{text-align:center}.file-input-label{align-items:center;background:linear-gradient(135deg,#1e3d59,#17a2b8);background:var(--ewu-gradient);border:none;border-radius:12px;border-radius:var(--border-radius);box-shadow:0 2px 4px #0000001a;box-shadow:var(--shadow-sm);color:#fff;cursor:pointer;display:inline-flex;font-size:1.1rem;font-weight:500;font-weight:var(--font-weight-medium);gap:1rem;gap:var(--spacing-sm);overflow:hidden;padding:1.5rem 3rem;padding:var(--spacing-md) var(--spacing-xl);position:relative;text-decoration:none;transition:all .3s ease}.file-input-label:before{content:"📄";font-size:1.2rem}.file-input-label:hover{box-shadow:0 4px 12px #00000026;box-shadow:var(--shadow-md);transform:translateY(-2px)}.file-input-label:active{transform:translateY(0)}.file-info{background:#f8f9fa;background:var(--ewu-light);border:1px solid #e9ecef;border-radius:12px;border-radius:var(--border-radius);margin-top:2rem;margin-top:var(--spacing-lg);padding:2rem;padding:var(--spacing-lg)}.file-info p{font-weight:700;margin:0 0 10px}.file-actions{display:flex;gap:10px;justify-content:center}.upload-btn{background-color:#28a745;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:10px 20px}.upload-btn:hover{background-color:#1e7e34}.reset-btn{background-color:#6c757d;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:10px 20px}.reset-btn:hover{background-color:#545b62}.upload-instruction{color:#17a2b8;color:var(--ewu-secondary);font-size:1.1rem;font-weight:500;font-weight:var(--font-weight-medium);margin:2rem 0;margin:var(--spacing-lg) 0;opacity:.8}.format-info{background:#fff;border-left:4px solid #007bff;border-radius:6px;padding:20px;text-align:center}.format-info h3{color:#495057;margin-top:0}.format-info ul{display:inline-block;margin:10px 0;padding-left:20px;text-align:left}.format-info li{color:#6c757d;margin:5px 0}.loading{background:#e3f2fd;border-left:4px solid #2196f3}.loading,.success{border-radius:6px;margin:20px 0;padding:20px;text-align:center}.success{background:#e8f5e8;border-left:4px solid #4caf50}.success p{color:#2e7d32;font-weight:700;margin:0}.error{background:#ffebee;border-left:4px solid #f44336;border-radius:6px;margin:20px 0;padding:20px;text-align:center}.error p{color:#c62828;margin:0}.routine-container{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;padding:20px}.routine-container h2{border-bottom:2px solid #dee2e6;color:#495057;margin-top:0;padding-bottom:10px}.schedule-header{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;margin-bottom:20px}.schedule-header h2{border-bottom:none;margin:0;padding-bottom:0}.schedule-actions{align-items:center;gap:20px}.export-buttons,.schedule-actions{display:flex;flex-wrap:wrap;justify-content:center}.export-buttons{gap:1.5rem;gap:var(--spacing-md);margin:3rem 0;margin:var(--spacing-xl) 0}.upload-new-btn{align-items:center;background:linear-gradient(135deg,#1e3d59,#17a2b8);background:var(--ewu-gradient);border:none;border-radius:12px;border-radius:var(--border-radius);box-shadow:0 2px 4px #0000001a;box-shadow:var(--shadow-sm);color:#fff;cursor:pointer;display:inline-flex;font-size:1rem;font-weight:500;font-weight:var(--font-weight-medium);gap:.5rem;gap:var(--spacing-xs);padding:1.5rem 2rem;padding:var(--spacing-md) var(--spacing-lg);text-decoration:none;transition:all .3s ease}.upload-new-btn:hover{background:linear-gradient(135deg,#5a6268,#495057);box-shadow:0 4px 8px #0003;transform:translateY(-2px)}.export-btn{align-items:center;border:none;border-radius:6px;cursor:pointer;display:flex;font-size:14px;font-weight:700;gap:8px;padding:10px 20px;transition:all .3s ease}.export-btn:disabled{cursor:not-allowed;opacity:.6}.export-pdf{align-items:center;background:linear-gradient(135deg,#dc3545,#c82333);border:none;border-radius:12px;border-radius:var(--border-radius);box-shadow:0 2px 4px #0000001a;box-shadow:var(--shadow-sm);color:#fff;cursor:pointer;display:inline-flex;font-size:1rem;font-weight:500;font-weight:var(--font-weight-medium);gap:.5rem;gap:var(--spacing-xs);padding:1.5rem 2rem;padding:var(--spacing-md) var(--spacing-lg);transition:all .3s ease}.export-pdf:before{content:"";font-size:1.2rem}.export-pdf:hover:not(:disabled){box-shadow:0 4px 12px #00000026;box-shadow:var(--shadow-md);transform:translateY(-2px)}.export-png{align-items:center;background:linear-gradient(135deg,#17a2b8,#138496);background:linear-gradient(135deg,var(--ewu-secondary),#138496);border:none;border-radius:12px;border-radius:var(--border-radius);box-shadow:0 2px 4px #0000001a;box-shadow:var(--shadow-sm);color:#fff;cursor:pointer;display:inline-flex;font-size:1rem;font-weight:500;font-weight:var(--font-weight-medium);gap:.5rem;gap:var(--spacing-xs);padding:1.5rem 2rem;padding:var(--spacing-md) var(--spacing-lg);transition:all .3s ease}.export-png:before{content:"";font-size:1.2rem}.export-png:hover:not(:disabled){box-shadow:0 4px 12px #00000026;box-shadow:var(--shadow-md);transform:translateY(-2px)}.routine-table{animation:fadeInUp .8s ease-out .6s both;margin-top:20px;overflow-x:auto;width:100%}.schedule-table{background:#fff;border-collapse:collapse;border-radius:8px;box-shadow:0 4px 6px #0000001a;overflow:hidden;width:100%}.schedule-table td,.schedule-table th{border:1px solid #dee2e6;padding:8px;text-align:center;vertical-align:middle}.schedule-table th{background-color:#495057;color:#fff;font-size:14px;font-weight:700}.day-header,.time-header{padding:12px 8px}.time-cell{background-color:#f8f9fa;font-size:12px;font-weight:700;min-width:80px;width:80px}.schedule-cell{background-color:#fff;height:80px;min-width:140px;position:relative;vertical-align:top;width:140px}.course-block{align-items:center;background-color:#ffb6c1;border:1px solid #333;border-radius:3px;box-shadow:0 1px 2px #0000001a;box-sizing:border-box;color:#333;font-size:9px;font-weight:500;height:calc(100% - 2px);left:0;line-height:1.1;margin:1px;overflow:hidden;padding:2px;position:absolute;right:0;transition:transform .2s,box-shadow .2s}.course-name{-webkit-hyphens:auto;hyphens:auto;line-height:1.1;margin-bottom:1px}.course-name,.course-room,.course-time{word-wrap:break-word;color:inherit;display:block;max-width:100%}.course-room,.course-time{line-height:1;margin:.5px 0;opacity:.9}.course-block:hover{transform:scale(1.02)}.course-code{color:#666;font-weight:400;-webkit-hyphens:auto;hyphens:auto;opacity:.7}.course-code,.course-time{line-height:1.1;overflow:visible;text-align:center;white-space:normal;width:100%;word-break:break-word}.course-time{color:#1a1a1a;font-weight:700;opacity:1}.course-room{color:#2c5aa0;font-size:.85em;font-style:normal;line-height:1.1;opacity:1;overflow:visible;text-align:center;white-space:normal;word-break:break-word}.schedule-summary{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;margin-top:30px;padding:20px}.schedule-summary h3{color:#333;font-size:1.2em;font-weight:600;margin:0 0 15px;text-align:center}.course-legend{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.course-legend-item{align-items:center;border-radius:20px;box-shadow:0 2px 4px #0000001a;display:flex;font-size:.9em;font-weight:600;gap:8px;padding:8px 16px;transition:transform .2s ease}.course-legend-item:hover{box-shadow:0 4px 8px #00000026;transform:translateY(-2px)}.course-color-indicator{font-size:1.2em;margin-right:4px}.course-code-legend{font-weight:600;letter-spacing:.5px}.course-block{border-radius:6px;box-shadow:0 2px 4px #0000001a;display:flex;flex-direction:column;font-size:.85em;font-weight:600;justify-content:center;min-height:60px;padding:8px;text-align:center;transition:all .2s ease}.course-block:hover{box-shadow:0 4px 8px #0003;transform:scale(1.05);z-index:10}.course-name{font-weight:700;letter-spacing:.5px;margin-bottom:4px}.course-time{font-size:.8em;margin-bottom:2px;opacity:.9}.course-room{font-size:.75em;opacity:.85}.schedule-summary h3{color:#495057;margin-top:0}.course-list{display:flex;flex-wrap:wrap;gap:15px;justify-content:center}.course-summary-item{align-items:center;background:#fff;border-radius:20px;box-shadow:0 1px 3px #0000001a;display:flex;gap:8px;padding:8px 15px}.course-color-indicator{border:2px solid #333;border-radius:50%;height:16px;width:16px}@media (max-width:1200px){.schedule-grid{grid-template-columns:60px repeat(7,1fr)}.course-code{font-size:11px}.course-time{font-size:9px}.course-room{font-size:8px}}@media (max-width:768px){*{box-sizing:border-box}body{margin:0;padding:0}#root,body{overflow-x:hidden}#root{max-width:100vw;width:100vw}.App{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:100vh;overflow-x:hidden;padding:0}.App-header{background:linear-gradient(135deg,#1e3d59,#17a2b8);background:var(--ewu-gradient);border-radius:16px;border-radius:var(--border-radius-lg);box-shadow:0 4px 12px #00000026;box-shadow:var(--shadow-md);flex-shrink:0;margin-bottom:0;max-width:400px;padding:15px 15px 10px;width:100%}.App-header h1{font-size:2rem}.App-header p{font-size:.9rem;line-height:1.2;max-width:100%;overflow:hidden;padding:0 10px;text-overflow:ellipsis;white-space:nowrap}.file-upload{background:#fff;border-radius:0 0 16px 16px;border-radius:0 0 var(--border-radius-lg) var(--border-radius-lg);box-shadow:0 4px 12px #00000026;box-shadow:var(--shadow-md);justify-content:center;margin:0 auto;max-width:400px;min-height:120px;padding:20px 15px}.file-upload,.upload-section{align-items:center;display:flex;flex-direction:column}.upload-section{gap:10px;margin:0;padding:0;width:100%}.file-input-label{display:block;font-size:14px;margin:0 auto;max-width:250px;padding:10px 18px}.format-info{flex-shrink:0;margin:0;text-align:center}.format-info h3{font-size:.9rem;margin:0 0 5px}.format-info ul{font-size:.8rem;list-style:none;margin:0;padding:0}.App-main{display:flex;flex:0 1;flex-direction:column;gap:0;justify-content:flex-start;max-width:100vw;min-height:auto;width:100vw}.App-header+.App-main{margin-top:10px}.routine-table{margin-left:0;margin-right:0;margin-top:15px;overflow:hidden}.routine-container,.routine-table{max-width:100vw;padding:0;width:100vw}.schedule-grid{--time-column-width:40px;background-color:#fff;font-size:10px;gap:0;grid-template-columns:40px repeat(7,1fr);max-width:100vw;min-height:500px;overflow:visible;width:100vw}.time-cell{border-right:1px solid #dee2e6;font-size:8px;height:10px;line-height:1;padding:1px;width:40px}.schedule-cell{background-color:initial;border:none;border-right:1px solid #ddd;height:10px}.schedule-cell:nth-child(8n){border-right:none}.header-cell{font-size:11px;height:40px;padding:8px 4px}.day-header{font-size:11px;text-orientation:mixed;writing-mode:initial}.time-header{font-size:10px}.course-block{border-radius:2px;border-width:1px;margin:.5px;padding:1px 2px}.export-buttons{flex-wrap:wrap;gap:10px;justify-content:center;margin-top:15px;max-width:350px;width:100%}.export-btn{border-radius:10px;flex:1 1;font-size:14px;justify-content:center;max-width:160px;min-width:120px;padding:12px 16px}.schedule-actions{align-items:center;flex-direction:column;gap:15px}.upload-new-btn{font-size:14px;max-width:250px;padding:12px 20px;width:100%}}@media (max-width:480px){.App{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:100vh;overflow-x:hidden;padding:0}.App-header{background:linear-gradient(135deg,#1e3d59,#17a2b8);background:var(--ewu-gradient);border-radius:16px;border-radius:var(--border-radius-lg);box-shadow:0 4px 12px #00000026;box-shadow:var(--shadow-md);flex-shrink:0;margin-bottom:0;max-width:320px;padding:12px 10px 8px;width:100%}.App-header h1{font-size:1.4rem;line-height:1.2;margin-bottom:8px}.App-header p{font-size:.75rem;line-height:1.1;max-width:100%;overflow:hidden;padding:0 5px;text-overflow:ellipsis;white-space:nowrap}.file-upload{background:#fff;border-radius:0 0 16px 16px;border-radius:0 0 var(--border-radius-lg) var(--border-radius-lg);box-shadow:0 4px 12px #00000026;box-shadow:var(--shadow-md);justify-content:center;margin:0 auto;max-width:320px;min-height:100px;padding:15px 12px}.file-upload,.upload-section{align-items:center;display:flex;flex-direction:column}.upload-section{gap:8px;margin:0;padding:0;width:100%}.file-input-label{display:block;font-size:13px;margin:0 auto;max-width:180px;padding:8px 15px;text-align:center;width:auto}.format-info{flex-shrink:0;margin:0;text-align:center}.format-info h3{font-size:.8rem;margin:0 0 3px}.format-info ul{font-size:.7rem;list-style:none;margin:0;padding:0}.App-main{display:flex;flex:0 1;flex-direction:column;gap:0;justify-content:flex-start;max-width:100vw;min-height:auto;width:100vw}.routine-container{max-width:100vw;overflow-x:hidden;padding:0;width:100vw}.schedule-grid{--time-column-width:25px;background-color:#fff;border:none;gap:0;grid-template-columns:25px repeat(7,1fr);max-width:100vw;min-height:400px;overflow:hidden;width:100vw}.time-cell{border-right:1px solid #dee2e6;font-size:7px;height:10px;padding:1px;width:25px}.schedule-cell{background-color:initial;border:none;border-right:1px solid #ccc;height:10px}.schedule-cell:nth-child(8n){border-right:none}.header-cell{font-size:8px;height:25px;padding:3px 1px}.day-header{font-size:8px;line-height:1.1;padding:5px 2px;text-orientation:mixed;transform:none;writing-mode:initial}.time-header{font-size:7px}.export-btn{font-size:11px;min-width:90px;padding:8px 10px}.course-block{border-radius:2px;border-width:1px;left:1px!important;margin:.5px;padding:1px;right:1px!important}.format-info{padding:10px}.format-info h3{font-size:1rem}.format-info li{font-size:.8rem}.export-buttons{gap:12px;margin-top:20px}.export-btn{border-radius:10px;flex:1 1;font-size:14px;max-width:none;min-width:130px;padding:16px 12px}.upload-new-btn{border-radius:10px;font-size:15px;margin-top:10px;max-width:280px;padding:16px 20px;width:100%}}@media (max-width:768px) and (orientation:landscape){.schedule-grid{grid-template-columns:50px repeat(7,1fr);min-height:400px}.day-monday{left:50px}.day-tuesday{left:calc(42.85714px + 14.28571%)}.day-wednesday{left:calc(35.71429px + 28.57143%)}.day-thursday{left:calc(28.57143px + 42.85714%)}.day-friday{left:calc(21.42857px + 57.14286%)}.day-saturday{left:calc(14.28571px + 71.42857%)}.day-sunday{left:calc(7.14286px + 85.71429%)}.day-column{width:calc(14.28571% - 7.14286px)}.course-code{font-size:9px}.course-time{font-size:7px}.course-room{font-size:6px}.time-cell{font-size:7px;height:32px}.schedule-cell{height:33px}}@media (hover:none) and (pointer:coarse){.export-btn,.file-input-label{border-radius:12px;padding:16px 20px}.export-btn,.file-input-label,.reset-btn,.upload-btn{-webkit-tap-highlight-color:transparent;font-size:16px;min-height:48px;touch-action:manipulation}.reset-btn,.upload-btn{border-radius:10px;padding:14px 20px}.upload-new-btn{border-radius:12px;font-size:16px;padding:16px 24px}.download-btn,.upload-new-btn{-webkit-tap-highlight-color:transparent;min-height:48px;touch-action:manipulation}.course-block{-webkit-tap-highlight-color:transparent;border-width:3px;min-height:30px;touch-action:none}.schedule-container{scroll-behavior:smooth}.schedule-table{touch-action:auto}.App-header p{line-height:1.5;padding:10px 15px}.App-header p,input[type=file]{font-size:16px}}@media (max-width:360px){.schedule-grid{font-size:10px;grid-template-columns:40px repeat(7,1fr)}.day-monday{left:40px}.day-tuesday{left:calc(34.28571px + 14.28571vw)}.day-wednesday{left:calc(28.57143px + 28.57143vw)}.day-thursday{left:calc(22.85714px + 42.85714vw)}.day-friday{left:calc(17.14286px + 57.14286vw)}.day-saturday{left:calc(11.42857px + 71.42857vw)}.day-sunday{left:calc(5.71429px + 85.71429vw)}.day-column{width:calc(14.28571vw - 5.71429px)}.time-cell{font-size:8px;padding:3px 1px;width:40px}.day-header{font-size:7px;padding:4px 1px}.export-btn{font-size:13px;max-width:140px;min-width:100px;padding:10px 12px}}.app-footer{animation:fadeInUp .6s ease-out .6s both;border-top:1px solid #0000001a;color:#17a2b8;color:var(--ewu-secondary);font-size:.9rem;margin-top:3rem;margin-top:var(--spacing-xl);padding:1.5rem;padding:var(--spacing-md);text-align:center}.app-footer a{color:#1e3d59;color:var(--ewu-primary);font-weight:500;font-weight:var(--font-weight-medium);position:relative;text-decoration:none;transition:all .3s ease}.app-footer a:hover{color:#17a2b8;color:var(--ewu-secondary);transform:translateY(-1px)}.app-footer a:after{background:linear-gradient(135deg,#1e3d59,#17a2b8);background:var(--ewu-gradient);bottom:-2px;content:"";height:2px;left:0;position:absolute;transition:width .3s ease;width:0}.app-footer a:hover:after{width:100%}@media (max-width:768px){.app-footer{font-size:.8rem;margin-top:2rem;margin-top:var(--spacing-lg);padding:1rem;padding:var(--spacing-sm)}}@media (max-width:480px){.app-footer{font-size:.75rem;margin-top:1.5rem;margin-top:var(--spacing-md);padding:.5rem;padding:var(--spacing-xs)}}.download-controls{flex-direction:column}.download-buttons,.download-controls{display:flex;gap:1rem;gap:var(--spacing-sm)}.download-buttons{flex-wrap:wrap}.download-btn{align-items:center;border:none;border-radius:12px;border-radius:var(--border-radius);box-shadow:0 2px 4px #0000001a;box-shadow:var(--shadow-sm);cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:500;font-weight:var(--font-weight-medium);justify-content:center;min-width:140px;padding:.5rem 1.5rem;padding:var(--spacing-xs) var(--spacing-md);text-decoration:none;transition:all .3s ease}.download-btn:hover:not(:disabled){box-shadow:0 4px 12px #00000026;box-shadow:var(--shadow-md);transform:translateY(-2px)}.download-btn:active:not(:disabled){transform:translateY(0)}.download-btn:disabled{box-shadow:0 2px 4px #0000001a;box-shadow:var(--shadow-sm);cursor:not-allowed;opacity:.6;transform:none}.pdf-btn{background:linear-gradient(135deg,#dc3545,#c82333);color:#fff}.pdf-btn:hover:not(:disabled){background:linear-gradient(135deg,#c82333,#a71e2a)}.png-btn{background:linear-gradient(135deg,#17a2b8,#138496);background:linear-gradient(135deg,var(--ewu-secondary) 0,#138496 100%);color:#fff}.png-btn:hover:not(:disabled){background:linear-gradient(135deg,#138496,#0f6674)}.download-error{background-color:#f8d7da;border:1px solid #f5c6cb;border-radius:12px;border-radius:var(--border-radius);color:#721c24;font-size:.9rem;padding:.5rem 1rem;padding:var(--spacing-xs) var(--spacing-sm)}.download-hint{color:#6c757d;font-size:.85rem;font-style:italic;margin:0}@media (max-width:768px){.App{padding:1rem;padding:var(--spacing-sm)}.App-header{padding:2rem 1.5rem;padding:var(--spacing-lg) var(--spacing-md)}.App-header h1{font-size:1.8rem}.schedule-container{margin:0;overflow:visible;padding:0}.schedule-table{font-size:.75rem;table-layout:fixed;width:100%}.schedule-table td,.schedule-table th{word-wrap:break-word;overflow:hidden;padding:3px 1px}.schedule-table th{font-size:.7rem;padding:6px 2px}.time-cell{font-size:.65rem;min-width:auto;padding:3px 1px;width:12%}.schedule-cell{height:60px;min-width:auto;position:relative!important;vertical-align:top;width:12.5%}.course-block{align-items:center;border:1px solid #fff3;border-radius:4px;box-shadow:0 1px 3px #0003;box-sizing:border-box;display:flex;flex-direction:column;font-size:.6rem;justify-content:center;left:2px!important;line-height:1;overflow:hidden;padding:2px;position:absolute!important;right:2px!important;text-align:center;text-overflow:ellipsis;word-break:break-word;z-index:2!important}.course-name{font-size:clamp(.65rem,3vw,.8rem);font-weight:700;-webkit-hyphens:auto;hyphens:auto;line-height:1.1;margin-bottom:1px}.course-name,.course-room,.course-time{word-wrap:break-word;color:inherit;display:block;max-width:100%}.course-room,.course-time{font-size:clamp(.55rem,2.5vw,.7rem);line-height:1;margin:.5px 0;opacity:.95}.download-buttons{flex-direction:column;gap:.5rem}.download-btn{font-size:.9rem;min-width:auto;padding:.75rem;width:100%}}@media (max-width:480px){.App{padding:.5rem}.App-header{margin-bottom:1.5rem;margin-bottom:var(--spacing-md);padding:1.5rem 1rem;padding:var(--spacing-md) var(--spacing-sm)}.App-header h1{font-size:1.4rem;line-height:1.2}.App-header p{font-size:.85rem;line-height:1.3}.schedule-container{margin:0;overflow:visible;padding:0}.schedule-table{font-size:.7rem;table-layout:fixed;width:100%}.schedule-table th{font-size:.65rem;line-height:1.1;padding:4px 1px}.time-cell{font-size:.6rem;line-height:1.1;padding:2px 1px;width:15%}.schedule-cell{height:50px;position:relative!important;vertical-align:top;width:12.14%}.course-block{align-items:center;border:1px solid #fff3;border-radius:2px;box-shadow:0 1px 3px #0003;box-sizing:border-box;display:flex;flex-direction:column;font-size:.55rem;justify-content:center;left:2px!important;line-height:.9;overflow:hidden;padding:2px;position:absolute!important;right:2px!important;text-align:center;word-break:break-word;z-index:2!important}.course-name{font-size:clamp(.6rem,2.8vw,.75rem);font-weight:700;-webkit-hyphens:auto;hyphens:auto;margin-bottom:1px}.course-name,.course-room,.course-time{word-wrap:break-word;color:inherit;display:block;line-height:1;max-width:100%}.course-room,.course-time{font-size:clamp(.5rem,2.3vw,.65rem);margin:.5px 0;opacity:.9}.download-btn{font-size:.8rem;padding:.6rem}.course-summary{padding:1rem;padding:var(--spacing-sm)}.course-summary h3{font-size:1rem;margin-bottom:.5rem}.course-tag{display:inline-block;font-size:.65rem;margin:.15rem;padding:.25rem .5rem}}@media (max-width:400px){.App{overflow-x:hidden;padding:.25rem}.schedule-container{margin:0;overflow:visible;padding:0;width:100%}.schedule-table{font-size:.65rem;table-layout:fixed;width:100%}.schedule-table th{font-size:.6rem;line-height:1;padding:3px 1px}.time-cell{font-size:.55rem;line-height:1;padding:2px 0;width:16%}.schedule-cell{height:45px;position:relative!important;vertical-align:top;width:12%}.course-block{align-items:center;border:1px solid #fff3;border-radius:4px;box-shadow:0 1px 3px #0003;box-sizing:border-box;display:flex;flex-direction:column;font-size:.5rem;justify-content:center;left:2px!important;line-height:.95;overflow:hidden;padding:3px;position:absolute!important;right:2px!important;text-align:center;word-break:break-all;z-index:2!important}.course-name{font-size:clamp(.65rem,4vw,.85rem);font-weight:700;-webkit-hyphens:auto;hyphens:auto;letter-spacing:.3px;margin-bottom:1px;text-shadow:0 1px 2px #000000b3}.course-name,.course-room,.course-time{word-wrap:break-word;color:#fff!important;display:block;line-height:1;max-width:100%}.course-room,.course-time{font-size:clamp(.55rem,3.2vw,.7rem);font-weight:500;margin:1px 0;opacity:.95;text-shadow:0 1px 1px #0009}.download-btn{font-size:.75rem;padding:.5rem}.App-header h1{font-size:1.2rem;line-height:1.1}.App-header p{font-size:.8rem;line-height:1.2}.course-tag{font-size:.6rem;margin:.1rem;padding:.2rem .4rem}}
/*# sourceMappingURL=main.fb465e74.css.map*/